Namespace cache rework

I realize that this is a fairly large pull request but I believe that it address some issues on the Java side of Nokogiri.  The main thrust of the work is a reworking of the NamespaceCache to cache namespaces based on the node from which they are declared.  The caching itself is still performed in a central object but it has been reworked to store the namespaces in a hierarchal manor.   This allows for a namespace prefixes and default namespaces to be redeclared on elements as allowed for by the xml specification.   This pull request also address issues #902 #940 and #943.

All of the tests pass though 2 of them needed to be skipped do to allowing namespace redefinition.  The 2 tests that were skipped are in the test_builder.rb file and are specifically related to testing that you cannot redefine namespaces.