Don't initialize classes during import

"import" no longer causes the imported class to be initialized. This
change better matches Java's import behavior and allows the importing of
classes that do significant work at initialization time which may fail.
This semantics change is not expected to effect most code, but certain
code may have depended on behavior that is no longer true.

1) importing a Class defined via gen-class no longer causes its defining
namespace to be loaded, loading is now deferred until first reference. If
immediate loading of the namespace is needed, "require" it directly.
2) Some code may have depended on import to initialize the class before it
was used. It may now be necessary to manually call (Class/forName
"org.example.Class") when initialization is needed. In most cases, this
should not be necessary because the Class will be initialized
automatically before first use.

Also changes a test that failed after making this change which depended on
a few implementation details that we don't necessarily want to guarantee.

1) It expected that loading the Class results in loading the namespace
(which isn't promised by gen-class, it's just the default)
2) It expected that importing the Class results in initializing the Class
3) It expected that initializing the Class results in adding some default vars
to the namespace (-toString for instance)

Signed-off-by: Stuart Halloway <stu@cognitect.com>
Fix CLJ-1330: make top-level named functions classnames don't clash with def'ed function classnames

Signed-off-by: Stuart Halloway <stu@cognitect.com>
make sure Java files respect Reduced

deref reduced vals

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1535 - boxed math warnings only appear if (set! *unchecked-math* :warn-on-boxed))

Signed-off-by: Stuart Halloway <stu@cognitect.com>
CLJ-1549 Split IReduce into IReduceInit

Signed-off-by: Stuart Halloway <stu@cognitect.com>