Refactor PyJavaType so it is readable again

Because of our work to support semantic equivalence of
java.util.{List|Map|Set} with Python builtins of list, dict, and set,
PyJavaType has grown significantly. In particular, it is hard to
follow the logic of adding of collection proxy and post proxy methods.

Do a simple refactoring to address by moving collection logic into
JavaProxyList, JavaProxyMap, and JavaProxySet (currently a placeholder
for forthcoming work). Also apply the singleton holder pattern for
building such proxies to simplify initialization.