Support writing needed extension types

I have been erring on the side of explicitness and would rather see the resolution of truthiness happen outside of the library rather than inside just to reduce the possibility of misunderstanding or unintended behavior.  The Java API isn't going to be able to deal with truthiness the same way - you'll have to pass in a boolean.  I don't know if trying to make the two APIs the same has been a worthwhile effort (i.e. keep as much of the logic in the Java and just have Clojure provide a wrapper), but it's certainly been a driving factor for how and what we write in the Clojure side.

Also, consider the use cases of these: is the criticality of an extension something that's not going to be known ahead of time? I can't say for certain but it seems like this is something that's going to be hardcoded and you wouldn't have logic for determining this anyway.

Either way, I'm more interested in sharing my reasoning and thought-process here rather than making a stand one way or another.  We'll be able to refine this stuff as we need so I'm happy with either way.