Refactor

This is a combination of the following major changes, along with a collection of other minor fixes and additions. It should bring this JavaScript port up to parity again.

- jasonlong/geo_pattern#16 refactoring
- jasonlong/geo_pattern#11 add tessellation pattern
- jasonlong/geo_pattern#17 change bricks to octogons
- jasonlong/geo_pattern#18 add concentric circles pattern
- jasonlong/geo_pattern#19 add chevrons pattern