Minor API changes

- Added list reverse:
```swift
public func reverse() -> List<A> {
  return self.foldl(flip(List.cons), initial: List())
}
```
- Future and some monoids have `@auto_closure`s now.
- Added Array and Dictionary To / From classes that don't require the other, so you can still `JSONDecode` an array of something that can not be encoded. #69 
- JSON api changes: no longer using the Scala "object" pattern. Instead using class functions for `toJSON`. Please tell me if something is harder to write now.
I'll try that.  it may create some deadlocking issues.  I  was following a pretty common pattern in JS promises where you init, return, async-satisfy.  does that break some kind of invariant in the futures spec?