Fix parameter order for appdirs
Perform testing with an in-memory database
Consolidate to one database table

This means that adding fields / types won't require schema changes.

Changes:
 - There are no longer classes for each item types; everything is
   an Item with a kind attribute
 - Methods for extracting data from API responses are now in
      the extractors module rather than attached to respective
      classes
 - They also now take a raw Response instead of Response.json()
      or Response.content
 - Endpoints and search parameters are defined in dicts rather
      than type attributes
 - Fields specific to an item type are stored in Item.data as a
   JSON blob
 - Item must be instantiated with a kind as well as a query
 - Item.set_state() will delete the original if the item already
   exists. This means that metadata (e.g. rating) will be
   updated by state changes.
Fix docstring for extractors
Update API tests
Remove some unnecessary assertions in tests