Move static treeNodeCache from SHAMap to the Application

These changes address two JIRA issues:

 - 291 unittest reported leaked objects
 - 292 SHAMap::treeNodeCache should be a dependency injection

This line is modeled after two typedefs at ripple namespace scope in Application.h.  But I couldn't put the typedef in Application.h without include cycles happening.  SHAMapTreeNode.h seemed like a good central location for the typedef where I didn't need to make forward declarations anywhere,

No discrimination against typedef intended.  Mostly, I find the C++11 using construct (personally) to be easier to read.  Less relevant is that "using" can do stuff with templates that typedef can't.  See http://en.cppreference.com/w/cpp/language/type_alias But that doesn't matter in this circumstance.  If the group prefers typedef I can stay with typedef, I've used it for years.