Support for Arrays in constructors

This adds some support for creating test objects with array dependencies.

Basically if we have a constructor as: 

```C#
public MyCtor(IService[] services) {
}
```

It will pass in the equivalent of `new IService[0]`, so an empty array.
That is unless the user has either registered a mock of `IService` or an instance of `IService[]` like so:

```C#
public void MockWithArrays {
  var mocker = new AutoMocker();
  IService service = GetService();
  mocker.Use(new IService[] { service });
}

public void MockWithArrays2 {
  var mocker = new AutoMocker();
  IService service = GetService();
  mocker.Use(service);
}

public void MockWithArrays3 {
  var mocker = new AutoMocker();
  mocker.Use(new Mock<IService2>());
}
```