More descriptive naming: this -> button
Make API more idiomatic.

- Add more functions to minimize direct js interop.
- Implement ILookup for javascript objects, so that we can access
  properties like we use a normal map: (:key obj)
- Functions take coordinates and other dual parameters as a vector.