Use path helper in details controller to get static author path.
Add additional single click directive

ngClick and ngDblClick interfer with each other. That is why we need an additional directive to separate single and double click events reliably.
Implement single click behavior

Implements the following aspects:
1. Single click toggles row selection
2. Ctrl + single click adds row to selection
3. Shift + single click selects range of rows
Open WP detail view on double click
Fix typo
Improve range selection behavior
Test WP table selection behavior
Merge branch 'dev' into fix/user-link-in-wp-details-header
Test double click selection behavior
Refactor row selection
Select row on double click
Don't link to inactive users on wp details view.
Fix details controller test.
Use Array's indexOf
Refactor mouse selection specs
Test right click behavior
Only select right clicked WP row
Allow application/json type in API requests

Signed-off-by: Alex Coles <alex@alexbcoles.com>
Make WorkPackagesAPI PATCH expect JSON request body

Parameters not included in the URL should be encoded as
`application/json` (rather than `x-www-form-urlencoded`).

This patch causes the raw JSON request body to be passed through to
the WorkPackageRepresenter's `#from_json` method, rather than letting
Grape deserialize (with its built-in "parsers") the data and then
having to reserialize the parameters.

Signed-off-by: Alex Coles <alex@alexbcoles.com>
Make WatchersAPI specs expect JSON request body

Signed-off-by: Alex Coles <alex@alexbcoles.com>