Adding enable() should be added to the web3 library. You should not be breaking the standard. Now you creating all new methods like send() and sendAsync() on your ethereum provider meaning DAPPS that use your provider will only be compatible with metamask.
It makes sense to wait to inject a provider, but your provider has all new methods that are not standard.