This commit adds request logging to the app using morgan.
Every request will now be logged not one but twice: one when the request is received, and a second time when the response is sent.
The response logging also prints out the time elapsed in processing the request, which will be useful to debug performance issues (calls to the dashboard home are currently taking 4 - 15s on a populated database).
The new code uses a tiny middleware that uses nanoid to generate a random request id that can be used to match requests in the logs.
This logging will help us determine which requests are successful, which requests are slow, and establish what requests may have contributed to causing an application crash, making future debugging easier.
When trying to add a new URL, the Node.js MongoDB driver complains with the following error:
```
ObjectID generation failed. Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
```
This is because the `/new` url gets captured by the `/:id` route defined in `/route/task/index.js`. It's another instance of #244 that I missed when fixing it.
Due to the routes being defined in the wrong order, certain urls (e.g. `/tasks/:taskid:/edit`) are being captured by the results route instead (e.g. `/tasks/:taskid:/:resultid:`). This is causing the wrong method to being called with parts of the path like `edit`, `run`, etc. being passed as an argument to ObjectID(). As these are not valid MongoDB IDs, the method displays instead an error message:
> Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
Also change the path to the favicon image to be not relative, as this is causing a `favicon.png` string to be sent as an argument to ObjectID() when visiting certain pages due to the previous issue.
* Update gitignore
* Update makefile. Add hbs helper
* Collect all selectors for errors/warnings/notices
* Add list of techniques that help to solve problems
* Remove task-stats block from sidebar
* Remove script from Makefile
* Update tooltips. Map standards and techniques
* Update layout for new components: new tabs, errors panels, lists of selectors, tooltips and popovers
* Update styles for new layout and components
* Graph buttons and popovers styles
* Reformat less code
* Include popover. Update IE styles
* Problem details. Context popovers
* Update graph buttons. Add sorting by number of errors
* Update graph buttons params
* Fix tooltip names
* Swap details and ignore link-buttons
* Set ignore link colors