[Extensions] Add a way to tag extensions that will be loaded on demand

For now we will use a simple algorithm that will only load "leaf"
extensions on demand, for example, if "tizen", "tizen.time" and
"tizen.power" are in the extension list, we will enable loading on
demand for "tizen.time" and "tizen.power".
[Extensions] Load extensions on demand

Now that we have all the pieces it is time to put them together.

For each extension marked as 'should use the trampoline', we setup
"trap" acessors (for all entry points), that when run will load the
extension and create an instance for it. Before the extension is
loaded we need to remove all the references to the accessor function,
so it is not run anymore for those objects.
[Extensions] Fix context destruction test

Now that contexts (meaning instances) are only created when need now, we can
be more strict about this that only the required number of contexts will be
created.