[fix][plum] gihp\Object\Tree should re-evaluate subtrees on getSHA1()

Child trees can be updated without the parent noticing. This
causes stale SHA1s to be used for name mapping and in the objects.
It may also cause bad references to objects being written to disk.
So remap all names and objects when a new SHA1 is generated, and
clear the SHA1 immediately afterwards to always regenerate the SHA1
[fix/ref][porc] Refactor gihp\Tree and fix some issues

 * Resolve all trees in one function: Tree::getFileObject()
   Set $create = true to automatically create trees if they don't
   exist and are requested.
 * Add Tree::setFileObject() to easily set a new object (Tree or Blob)
   to a filename
 * Add Tree::getFileMode() to easily get the file mode (chmod) from a filename
 * Let Tree::moveFile() also move Trees and Blobs with the correct mode
 * Simplity Tree::addFile() by using Tree::getFileObject()