More useful exceptions.

Change-Id: I5f29ea0db61a7947a2eb88996a76865242d4f46b
Break out a base sqlite wrapper that doesn't use usernames.

It's useful not to have to key these by username, and instead just
just have a base class which allows for arbitrary id keys to be used.

Change-Id: I504274bf0192b1f4d1d08495a5f010ab2fcfe8b0
Break the Aged wrapping functionality into its own class tree.

So that it can be used without the item needing to be username keyed.
Also add a class which brings it back in so that the exsting classes
continue working as they did without change.

Change-Id: I90510fa5bf8f929510adfa4901e9c5f30b326dcd