initial work to get multi-dimensional arrays working
initial version of multidimensional arrays.

totally untested, but it inserts correctly and retrieves the values back in the correct format
couple small bug fixes
fixed casting bug

The new multidimensional iterator for casting had an improper bound on it. Was using the dimension of the array rather than the length of the first level.
updated tests for array casting errors

In order to make casting errors for multidimensional arrays make sense, the error message was adjusted. This commit fixes that in the tests that check for error output.
removed the .only() call in the test used for debugging the issue
added some initial tests for multidimensional arrays

All existing tests pass. Including Replset/Sharding tests
added a push() test for multidimensional arrays, not passing yet
the push() tests for multidimensional arrays passing

These tests are now passing. This commit also contains a couple changes to existing tests to make them work with multidimensional arrays
added support for legacy multidimensional arrays

previously, multidimensional arrays were accomplished by having
a flat array of type 'Mixed'. I added support for these again and
cleaned up a couple lines of comments
added multidimensional buffer tests and fixed several bugs

buffers being passed in as arrays causes a huge headache. Most of
this code is simply for dealing with that particular case in the
multidimensional realm. This is also passing all tests, including
the new ones
added new sub-doc tests for multidimensional arrays

added these tests, they are currently failing
fixed issue with null/undefined values in arrays

There was an error where if there was an array of the form
[x,y, null, null, z], it would not properly get cast. This fix
corrects that error.
fixed errors in subdocument tests

This fixes a couple bugs that were in the subdocument tests for
multidimensional fields
major bug fixes for multidimensional subdocs

this contains significant bug fixes for multidimensional
subdocuments. This now passes all of the multidimensional document
test.
forgot to remove .only() from test cases, couple errors to deal with on tests
small fix in the schema array

needed to move a check for the type until after the first if
statement. This had already been like that, but I changed it at
some point, unclear why.
fixed an issue with casting for mixed types
bug fixes for multidimensional arrays

couple small bug fixes, now passing all tests except for 1 test in
the versioning test suite. Not sure what is going on there
Re-factored the code to reduce duplication

previously, had a bunch of copy&pasted code around to parse the
multidimensional arrays, move that all into a single function to
reduce the clutter