Create admin menu.

Closes #39.
Large route refactoring.

Re-layout routes such that all the data routes are nested under a
secured route that is responsible for checking auth. Ensures that
authentication, authorization and error handling can happen in a
consistent manner.
Create admin parent route.

Any routes nested within the admin resource will check that the user is
admin and throw an error if not.
Make users belong to a single role.