Navigation drawer fragment

Moved the code responsible for doing most of the navigation drawer management to a dedicated NavigationDrawerFragment.

This will allow the navigation drawer to be used with any Activity with minimal effort (see #44).

`NavDrawerItem`s also now have a unique ID. Instead of relying on their position in the nav drawer to determine which Fragment to show (or what action to take), we can simply switch on the ID.

Finally, the navigation drawer is now shown when the user launches the app until they demonstrate that they have "learned" that the drawer exists by opening it themselves, as per the Android [navigation drawer guidelines](https://developer.android.com/design/patterns/navigation-drawer.html) (see interaction details).