Particular/NServiceBus — pull request #2587 by SeanFeldman (2014-11-26 07:19:30+00:00)
Title: Add Persistence extensibility per storage type

With NServiceBus Azure transport, persistence for Subscriptions and Timeouts could be done to different Azure storage tables. It was achieved through the following code:
```c#
var bus = Configure.With()
.DefaultBuilder()
.UseTransport(() => connectionString)
.AzureSubscriptionStorage(connectionString, createTable, tableName)
.UnicastBus();
```
With NSB V5 we have switched to use `PersistenceExtensions`, where `T` is a transport defined `PersistenceDefinition`.
Unfortunately, ability to customize persistence per storage type (`Sagas`, `Timeouts`, `Subscriptions`) was lost when moved to V5 leaving customers with XML config file or `IProvideConfiguration` workaround ([NServiceBus.Azure issue #213](https://github.com/Particular/NServiceBus.Azure/issues/213)).

This pull-request is an attempt to add persistence extensibility per storage type into V5. Sample above would be implemented as
```c#
config.UsePersistence();
config.UsePersistence ConnectionString(this PersistenceExtentions extentions, string connectionString)
{
// register connection string to use for keeping subscriptions when Azure storage persistence is used

return extentions;
}

public static PersistenceExtentions TableName(this PersistenceExtentions extentions, string tableName)
{
// register table name to use for keeping subscriptions when Azure storage persistence is used

return extentions;
}

public static PersistenceExtentions CreateSchema(this PersistenceExtentions extentions, bool createSchema)
{
// register if table should be created for keeping subscriptions when Azure storage persistence is used

return extentions;
}
}
```

@Particular/nservicebus & @Particular/azure please review/comment. Thank you.