Refactor minimap position calculations and separate a minimap-block class

The minimap is abstracted `MinimapBlock`.
The minimap-overlay is abstracted `MinimapBox`.

Every minimap has a `@block` property.
The `@block` is responsible only for mathematical calculations, then push results to UI.

```coffee
# In minimap-view.coffee 

initialize: ->
    @block = new MinimapBlock()
    @block.on 'offsetY', (y) => @offset({ 'top': y })
    @block.on 'reset-scale', (x, y) => @resetMinimapTransform()
    ...
```