Nested Properties

(This PR originated from https://github.com/gregoryjscott/Simpler/pull/13.)

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

#### Example 3
Given the following classes and query result a Person and a nested dynamic object are created. 
```c#
    public class Person
    {
        public string Name { get; set; }
        public int? Age { get; set; }
        public dynamic Pet { get; set; }
    }
```
Name | Age | PetName | PetAge
--- | --- | --- | --- 
Jim | 22 | Spot | 2 

Tasks
- [ ] Rebase and resolve the conflicts
- [ ] Pair with @rlgnak to get this flushed out