CURATOR-144: TreeCache.Builder to configure advanced options

It's just a surface area reduction.  Returning Listenable only allows a caller to add and remove listeners (which you want).  Returning the subtype ListenableContainer would let a caller manipulate the collection, i.e. size(), clear(), and forEach().  How weird would it be for an external caller to be able to do `cache.getListenable().forEach(...)`?