Encapsulated MetaData members. Added helper functions for common tasks.

Can you please verify that it is safe to remove the scheduling here? I think it is because the scheduling happens in the subsequent call to Directory::AddChild(), but I would appreciate a second opinion.