Redesign fitsviewer

Redesigned the fits viewer to use a DisplayableItem interface, where DisplayableItems know how to render themselves.  Currently there is a DisplayableImageSinglet implementation.  This should allow a DisplayableImageTriplet class (#145) to be implemented and integrated with the viewer more easily.

This redesign also had some other benefits:
-simplified figure and colorbar management
-matplotlib figures are now cached (closes #141)
-DisplayableImageSinglets can be rendered with or without a wx canvas

This last point allowed adding a utility function for displaying arbitrary astropy HDULists.  Example usage:
```
from astropy.io import fits
from ossos import fitsviewer

hdulist = fits.open("/path/to/fits_file.fits")
fitsviewer.display_hdulist(hdulist)
```