Programmatically manage connection strings for multi-db support

Adds ability to programmatically manage [per-endpoint connection strings](http://docs.particular.net/nservicebus/sqlserver/multiple-databases).

In order to configure the endpoint to connection string mapping one can either provide a collection of `EndpointConnectionString` objects:

```
var connectionStrings = new [] {
   new EndpointConnectionString("Sales","Data source=Sales"),
   new EndpointConnectionString("Billing","Data source=Billig")
};
busConfig.UseTransport<SqlServerTransport>().UseDifferentConnectionStringsForEndpoints(connectionStrings);
```

or provide a callback that will be called each time when looking for a connection string for a given endpoint:
```
Func<string,string> callback = (string endpointName) => {
   //here goes the code
};
busConfig.UseTransport<SqlServerTransport>().UseDifferentConnectionStringsForEndpoints(callback);
```

When looking up the connection string for a given endpoint, the programmatic configuration takes precedence over configuration file convention. If none of these works, the default connection string is used.