improve app:name command to support sub-namespaces
ServiceProvider contract

Allows service providers that do not extend `Support\ServiceProvider` but instead implement the contract, in the spirit of the new Contracts package.

- new ServiceProvider contract
- Foundation\Application typehints on the new contract
- call `$provider->register()` is now resolved using `->call()`
Split out laravel base and composer base in case they're in different directories

Anything pointing to composer.json or vendor/, should use path.composer… otherwise it's path.base.
Merge branch 'application-ServiceProvider-contract' into for-eplus
Merge branch 'namespaced-app-name' into for-eplus

Conflicts:
	src/Illuminate/Foundation/Console/AppNameCommand.php