Finished iterator for fields, no removal yet

Consolidated tests using the factor method pattern

Moved files around into different packages so they make logical sense,
and so that the engine package just has the more public parts of the
"api"

Finished the BinaryTreeIterator, it just doesn't have removal of fields
yet.