Navigation: Simplify item creation

Using the enums directly is less error prone and makes comparison
easier.
Navigation alerts: Use a single function

One function can be used to determine whether or not to warn the user
before navigating away and retrieving the AlertDialog.
Refactor Navigation enum

Navigation is renamed to NavigationItem because it represents a single
item in the navigation drawer. Now it contains all the information
needed to perform navigation. It can either have an Activity class to
launch with intent flags, a URL to view, or an Action to run arbitrary
code.
Combine Item and Category with NavigationItem

Now all of the data is stored in Navigation item and the list is
constructed by iterating over the enums and sending it off to the
adapter. The massive block of code that adds Items and Categories is now
gone!