Feature/bound alias

I have updated how aliases function within the Container class.  You can see the proposal here (https://github.com/laravel/framework/issues/2438).

I changed three specific behaviours.

First, when the container is asked if value is bound it will resolve any alias first.

Second, I updated the bind method to remove any previously defined alias, when binding a new abstract with the same name as the alias. So essentially the bindings take precedence over any defined alias.

Third, is similar to the second however it relates to instances being bound to the container.

I created other "helper" methods to check if a value is defined as an alias, and the removal of any alias.  I made those methods public ( probably should be protected ) so that I can demonstrate the functionality easily within my unit tests.

Please let me know if I need to do anything else.