Add subcategories to tracked items

Add a subcategory attribute to the tracked item to allow further
organization.  The subcategory is optional, and thus makes the UI more
complicated.  In the controller, each category contains a boolean
attribute "hasCategories" which tells the UI if the category has
subcategories.

In the UI, if the category does not have subcategories, then rendering
is done as normal.  If it does have subcategories, then each tracked
item is rendered within its subcategory section.  If the tracked item
doesn't specify a subcategory, then we create an "Other" subcategory
for it.