Prevent multiple register() / boot() calls on service providers used by multiple packages

Currently, if two packages have a dependency on the same package and they use `Illuminate\Foundation\Application->register()` to register the service provider for that dependency, the dependency's service provider gets instantiated twice.  For example, PackageA and PackageB both make use of PackageC.  I believe PackageC's service provider should only be registered and booted once.

This pull request adds a check to make sure service providers haven't already been loaded before instantiating a new instance of a service provider.