Add highlight decorations

This adds the ability to highlight ranges in the buffer tracked by markers. Just like find and replace does when you search for something, only more efficient. You write a little code:

```coffee
marker = editor.markBufferRange([[4, 13], [5, 17]], invalidate: 'inside')
editor.addDecorationForMarker(marker, type: 'highlight', class: 'sweet-view')

marker = editor.markBufferRange([[12, 16], [12, 19]], invalidate: 'inside')
editor.addDecorationForMarker(marker, type: 'highlight', class: 'sweet-view')
```

```css
.sweet-view .region {
  border-radius: 2px;
  background: rgba(255, 0, 0, 0.5);
}
```

And get this:
![screen shot 2014-06-17 at 11 46 53 am](https://cloud.githubusercontent.com/assets/69169/3304959/8da0d2dc-f650-11e3-834c-08027ecd98b6.png)

### Changes

Some things changed from the previous iteration of decorations

* All decorations are marker based. It made storage and rendering easier. There are 2 functions on editor that you need to be concerned with: `addDecorationForMarker` and `removeDecorationForMarker`
* There are no more typeless decorations. You can apply to multiple decoration types by using an array: `{type: ['gutter', 'line'], class: 'sweet-view'}`
* Rather than an option to handle softWrapped lines in gutter / line types, you specify a range of `[[4, 0], [4, Infinity]]` to apply it to the wrapped rows, and `[[4, 0], [4, 0]]` to only apply to the initial row. 

See #2507 for the original decorations