Add route capabilities to hibernate module.

Adds database routing ability (via 'RouteKey' HTTP header) for Hibernate.

In Configuration Class:
```java
@Valid
@NotNull
private ImmutableList<DataSourceRoute> databases;
```

In yaml file:
```yaml
# Database settings.
databases:
  - routeName: routeone
    database:
      # the name of your JDBC driver
      driverClass: com.mysql.jdbc.Driver

      # the username
      user: userone

      # the password
      password: password

      # the database url
      url: jdbc:mysql://hostone.com:3306/myapp
  - routeName: routetwo
    database:
      # the name of your JDBC driver
      driverClass: com.mysql.jdbc.Driver

      # the username
      user: usertwo

      # the password
      password: password

      # the database url
      url: jdbc:mysql://hosttwo.com:3306/myapp
```

During bootstrap retrieve the session factory map from the RouteCapableHibernateBundle and create all your DAOs keyed by the routeName. For Example
In Service:
```java
router = new DAORouter(hibernateBundle.getSessionFactories());
```

```java
public class DAORouter {
    private final ImmutableMap<Optional<String>, DAO> daos;
    public DAORouter(
            final ImmutableMap<Optional<String>, SessionFactory> sessionFactoryMap) {
        checkNotNull(sessionFactoryMap);
        checkState(!sessionFactoryMap.isEmpty());

        final Map<Optional<String>, DAO> daos = new LinkedHashMap<>();
        for (Entry<Optional<String>, SessionFactory> e : sessionFactoryMap
                .entrySet()) {
            SessionFactory factory = checkNotNull(e.getValue());

            // if you have multiple DAOs you can make this an collection of DAOs based on route name
            daos.put(e.getKey(), new DAO(factory));
        }

        this.daos = ImmutableMap.copyOf(daos);
    }
    
    public DAO getDAO(String routeName) {
        return daos.get(Optional.fromNullable(routeName));
    }
}
```

Now you can pass that router to your resources and retrieve the appropriate DAO via the HttpHeader 'RouteKey' for each request in your resources:
```java
private final DAORouter router;

@Context
private HttpHeaders headers;

public Resource(DAORouter router) {
    this.router = router;
}

@POST
@UnitOfWork
public void doSomething() {
  router.getDAO(getRouteName()).doSomething();
}

private String getRouteName() {
    return headers.getRequestHeaders().getFirst(UnitOfWorkRequestDispatcher.ROUTE_KEY_HEADER_NAME);
}
```