GCI-48: The whole thing

This implements points 1-6 of [GCI-48](https://issues.openmrs.org/browse/GCI-48). I merged all the individual branches that I was working on for each point, so this should be easily merged. Some shiny screenshots:

![img_0081](https://cloud.githubusercontent.com/assets/5162342/5429296/590acf60-83a3-11e4-8975-49e95587d42c.PNG) ![img_0082](https://cloud.githubusercontent.com/assets/5162342/5429295/590a711e-83a3-11e4-82cb-4882e89e2746.PNG) ![img_0084](https://cloud.githubusercontent.com/assets/5162342/5429298/590f8f3c-83a3-11e4-8ca9-7b52eceb98eb.PNG) ![img_0085](https://cloud.githubusercontent.com/assets/5162342/5429297/590f47de-83a3-11e4-8208-ed00372a075a.PNG) ![img_0088](https://cloud.githubusercontent.com/assets/5162342/5429299/59155a0c-83a3-11e4-9ebb-497a6393caf5.PNG)