New router

Like the `ScalaBusMod` this can be used as a replacement for `RouteMatcher`. It should be more idiomatic to use than the `RouteMatcher`.
I think the way these methods have been implemented are a bit confusing. I know what you are trying to do: trying to add Futures to methods such as Filesystem.exist...etc, to make it easier to compose. 

The implementation you have chosen might be due to the limitation of the current 1.x API, so I'll understand if that's the case, but let me explain how I would have approached this instead.

It would have simpler and easier to read if you had tried to get something like this in place:

```
for {
  exists <- vertx.fileSystem.exists(file)
} yield {
  if (exists) ...
  else ...
}
```

The benefit is that the client does not need to worry about ResultHandlers or anything like that, since they're just internal vehicles to carry results.

The key to achieve this might have been to do have an implicit class for FileSystem, called say FileSystemOps, and in there add a `def Future[Boolean] exists(file)` method. You then hide away all the result handler, async result complexity away from the user.

One thing to note here is what Tim suggested in the 2.x prototype [post](https://groups.google.com/forum/?fromgroups=#!topicsearchin/vertx/prototype/vertx/9Zbmw2wa5mU). Our Vert.x execution context might be wrong as is for calling `vertx.runOnContext(runnable.run())`. I think this doesn't cause an issue in our current 1.x branch, but if we were to implement `Future[x] ....` methods, it could bite us.