Implement SassScript Maps

This PR implements SassScript Maps and the API as of 3.3.14. There were changes to some map APIs in 3.4 none of which are implemented here.

I think this is about ready to start the feedback process. I'm not a c/c++ developer by trade so there's likely plenty of room for improvement.

#### TODO

- [x] map parsing
- [x] length
- [x] map-get
- [x] map-merge
- [x] map-remove (3.3 syntax)
- [x] map-keys
- [x] map-values
- [x] map-has-key
- [x] keywords

#### Known issues

- [ ] ~~`@debug` support~~ - https://github.com/sass/libsass/issues/223

#### Possible issues

- [ ] list and map variable keyword arguments in same definition (untested)
- [ ] have I sourcemaped correctly?

> list and map variable keyword arguments in same definition

I think this can be implemented as a separate feature. It's probably best suited to being shipped with `call`.

#### Spec

Specs for SassScript Maps have been added in https://github.com/sass/sass-spec/pull/44. Theses specs admittedly focus primarily on the map-* functions and not the parsing of Maps.

/cc @akhleung 
`dynamic_cast` will return a null pointer if the cast isn't possible (and List to Map isn't possible, if you actually have a Map). This will probably cause a crash! Anyway, I'll provide more feedback tomorrow.