Cleanup and refactoring

This is a pretty hefty pass at cleaning things up and doing some refactoring.

* Created helper methods for accessing SHA values, computing opacity, and fill colors.
* Added constants for min/max opacity, stroke color, stroke opacity, etc.
* Killed the giant case statement in favor of an array of available patterns.
* DRYed up styling by reusing a base `styles` variable when possible, then merging in differences.
* Tweaks min and max sizes for some shapes that felt too small and too big.
* Lots of general code formatting and prettifying.

I'm going to leave this open for a while for anyone who'd like to review these changes. I touched a ton of code in here and want to be careful before merging.

/cc @andrew @jonrohan