Remove dependency on type order for inheritance.

- Update test case to check for type order independency.
- Move test incomplete marker and check for abstract case to the bottom
of test case to make test fail if random type order is not supported.
- Check for inheritance after all classes have been loaded.
- Load base classes where needed to avoid dependency on order in Service class.