Add tests around handle handling.

Ensure handle classes have away to to compare for object equality.  Due to
the current design of MLArray, this cannot be done per object.  So instead
the same Objects share the same structure.  Eventually this should be fixed.
Add a decoder for Simulink derived MAT files.

Simulink will encode its MAT file using a form of base64, using uuencode's
key.  SimulinkDecoder is a very simple stream based class to parse it.
So, the value I had though was the object id is not.  Fix.

In the third segment, it appeared that there was an object id, related back
to the object id given in a structure.  However, this is not true at all, as
MATLAB will randomly decide what values go here.  However, the index into this
segment seems to be the actual object id.  Thus switch to using that value.
The meaning of the other field is left for someone else to divine, it isn't
important here.
Fix up a few coding issues:

 - Remove a redundant if check on the objectId in the third segment.  This
shouldn't happen anyways.
 - Remove an unused variable.
 - Correct a comment from a copy+paste error.
 - If properties are not found (not that there are none), then throw an exception.
 - Use the classname as found in the MCOS section, to make finding errors easier.
 - Even though it isn't used, store the segment 2 index for object properties,
   for the future.
Handle sub objects some.

Sub objects are just random integers in a uint32 array.  Start handling single
objects.  Eventually, multiple object arrays need to be handled, but that
requires adjusting MLObject first.