Added the ability to attach arbitary objects to Absy nodes using an
integer as a key. This allows any arbitrary "metadata" to be attached
at runtime. The implementation is lazy so the container is only created
if the SetMetadata<T>() method is called which should keep the memory
overhead very minimal.

Example usage:

var TheAssert = new AssertCmd(...);
...

TheAssert.SetMetadata(0, new List<Expr>());
TheAssert.GetMetadata<List<Expr>>(0);

foreach (var keyValue in TheAssert.NumberedMetaData)
{
  // do something
}

Debug.Assert(TheAssert.NumberedMetaDataCount == 1);