Fixed for TTestInterfaceProxy to use Implements instead of CastAs

    Does_A_Proxy_Implement_Two_Interfaces_After_A_Cast changed
    After_Destruction_Are_All_The_Interfaces_Cleaned_Up removed
Major rework of implements functionality. Some tests not working, don't merge into upstream yet.

The main issue with the previous implementation was that it fought with Delphi's Generics implementation too much. There is a major need for interface generic methods in the way I previously worked this.
Now this has been simplified so that the proxy does not know how to create its child proxies, its just given them. Its the TMock<T> record which knows how to achieve adding new proxies.

There are some access violations in some tests due to this change. Pushing to code to another branch so that I can work on it later.
Fixed QueryInterface for the instance method of a Mocked Interface.

QueryInterface will now work for all implemented interfaces off the object/interface returned by Instance.
Only thing left to implement is the Verify<T> and VerifyAll methods. These will verify the setup of the specific implementation or all setups calls.
TMock<T>.Implement<I>, TMock<T>.Setup<I>, TMock<T>.Instance<I>, and TMock<T>.Verify<I> have all been fully implemented.

This change allows the implementation of multiple interfaces on the one mock. The interfaces which are returned by the mock via the "instance" function will support all "implemented" interfaces set on the TMock.
Final clean up.