Support covariant constructors for suite members

Havarunner test suites fail to work when:

* Suite member classes declare a constructor that accepts an interface or a base class and the `suiteObject` returned by the suite is a concrete implementation or a sub class.
* `suiteObject` is enhanced by AOP - resulting in a proxy object that has a different runtime class name from the constructor argument.

To illustrate, the following test suite fails to run:
```java
// Suite class
public class Suite implements HavaRunnerSuite<SuiteObject> {
    @Override
    public SuiteObject suiteObject() {
        return new SuiteObjectImpl(); // Returns concrete object
    }
}

// SuiteMember class
@PartOf(Suite.class)
class SuiteMember {
    public SuiteMember(SuiteObject obj){ // Accepts an abstract type 
    }
}
```

This patch allows the suite to run if the suite member constructor argument is covariant.