Split off External applications from main library

External applications now accept containers which function as the
frontend where the ExtApplication functions as the backend. Containers
execute within their own engine and have their own context and are
destroyed when released.
API changes
fixed state object changes for eth api