Collections

This pull request is for #386. This will take a while before it's ready to merge into master, but I'm creating it to provide visibility into the ongoing work. 

To Do:

- [x] Specify width and/or height
- [ ] Just one drawing surface and tileCache per viewer
- [ ] Better concept of home
- [ ] Clean up code, add comments, etc.
- [ ] Special grunt watch for min build mode
- [ ] Fix broken unit tests
- [ ] Figure out what to do about constraints

Future:

- [ ] Non-uniform scaling, where the width and height scales are different
- [ ] Ability to start with an empty viewer and add images
- [ ] addImage method (possibly the same as addLayer) 
- [ ] Navigator: should show full scene, not just one image
- [ ] Navigator: viewport rectangle is wrong
- [ ] Reconcile with overlays
- [ ] New API for viewer.open() and viewer creation that allows you to pass in a pile of tileSources along with positioning information