Nested Properties

This adds the ability for simpler to create nested objects from a query. It works by matching matching a column name to the object properties and nested object properties.

#### Example 1
Given the following classes and query result a Person and a nested Pet object are created. 
```c#
    public class Person
    {
        public string Name { get; set; }
        public int? Age { get; set; }
        public Pet Pet { get; set; }
    }

    public class Pet
    {
        public string Name { get; set; }
        public int? Age { get; set; }
    }
```
Name | Age | PetName | PetAge
--- | --- | --- | ---
Jim | 22 | Spot | 2

#### Example 2
Given the following classes and query result a Person and 2 nested Pet object are created. 
```c#
    public class Person
    {
        public string Name { get; set; }
        public int? Age { get; set; }
        public Pet[] Pet { get; set; }
    }

    public class Pet
    {
        public string Name { get; set; }
        public int? Age { get; set; }
    }
```
Name | Age | Pet0Name | Pet0Age | Pet1Name | Pet1Age
--- | --- | --- | --- | --- | ---
Jim | 22 | Spot | 2 | Fiddo | 3

To do
* Fix failing tests
* Created tests for edge cases
* Add comments