v0.2.0 - Refactor to latest dart version

> This branch is not ready yet! **Do not merge.**


## Refactore RedisClient

**DONE**

I actually removed RawRedisCommands as well.

If someone wants to talk to the Socket directly, `RedisConnection.send()` and `RedisConnection.rawSend()` can be used.
~~I would dump the `RawRedisClient` in favor of a single unified `RedisClient` that has a `RawRedisCommands` object, which it invokes on the few functions that differ.~~

If somebody actually needs to access those raw functions, it's accessible through: `myRedisClient.raw.setget()`;

This way there's...

1. ...only one place that defines all the available methods (which is perfect for generating a good documentation API which I'll do as a next step),
2. ...no need for the interfaces anymore,
3. ...no copy past wraps of the "Native" Client,
4. ...a reduced risk of errors since there's much less repetitive code.


## Drop the callback functions

**DONE**

I'd remove the callback functions, and go for futures instead.

The syntax would be (much like most of dart's IO code):

```dart
RedisClient.connect(connectionString).then((RedisClient client) {
  // Do stuff
});
```

The same goes for the `onClosed` callback:

```dart
client.done.then(() => /* do stuff */);
```

This is pretty much the same API as dart's own [Socket](http://api.dartlang.org/docs/releases/latest/dart_io/Socket.html)

## Create a RedisProtocolTransformer

**DONE**

The redis replies should be transformed by a `RedisProtocolTransformer` so it's possible to just do this:

```dart
redisSocket.transform(new RedisProtocolTransformer()).listen((RedisReply reply) => );
```

## Small stuff

- [x] Getting rid of `_emptyList()`, `_emptyMap()` and `_emptyValue()` since you can just call `new Future([])` now. **DONE**


## To discuss

- *I think it would make sense to rename the `BytesEncoder` to `BytesSerializer` but I'm not completely certain yet on the functionality it provides. Does that make sense?* **CONFIRMED** **DONE**
- The stringify function of the `BytesEncoder` is quite complex and I'm wondering why it's not just `JSON.stringify`*