Update Email::config() to act like Cache/Log.

Move config() into a static method that allows read/writes of
configuration profiles. Move instance level logic to useConfig().

Add incomplete tests for transport configuration that is required.
Add Email::configTransport()

Add a new static method to define transports as configuration data. Once
defined a transport can be reused across multiple delivery profiles
using the 'transport' key in the future.

I've remove the Closure option from Email::config() as I don't think the
closure methods are going to be useful in the longer term if we keep
working towards ini based configuration.
Allow transport constructors to take configuration data.
Update Email to use new transport configuration.

Remove transportClass() as it is no longer needed. Now when setting
configuration up on an instance the transport will automatically be
constrcuted and checked. This has one downside where Email instances
will always need to reference a valid transport configuration. I think
this is best handled by setting up the application defaults correctly.
Update default email config file to use new features.
Remove @package tags.
Rename useConfig -> profile.
Merge pull request #1538 from markstory/3.0-email-config

3.0 email config