added tables.py, contains tables defined via SQLAlchemy
added class CommandManager which acts as an undo-redo-manager and the command classes AddEntry, EditEntry, RemoveEntry
added the main database interface, the Database class
added database/__init__.py
added caching support. builtin supported caching strategies are LRU and LFU
Merge branch 'staging' of https://github.com/sunpy/sunpy into database
clear the redo stack after a new command has been executed
fixed typos in seealso references
support undoing adding an entry even if this add command has not been commited
added __contains__ method to Database class so that one can easily check if an entry exists
use a pytest fixture for the CommandManager related tests
PEP8
test the pop_{undo,redo}_command methods from the CommandManager class
implement unstarring entries
use "pragma: no cover" where sensible
added docstring for Database.__contains__
Save tags and FITS Header entries in DatabaseEntry

- tags can be added with the method add_tags
- the method add_fits_header_entries_from_file adds all key-value pairs
  from the header of a given FITS file
- added convenience method entries_from_query_result
import all public classes from database.caching in the database package
use already existing *.fits file for testing DatabaseEntry.add_fits_header_entries_from_file
rename table "fitsheader" to "fitsheaderentries"