Implement macroexpand-1 and macroexpand from clojure.core
Merge branch 'master' into macroexpand
Merge pull request #108 from pepijndevos/master

Fix rational numbers at the REPL
Unrolling Cons.__len__ (was recursive) fixes #110.
Close #109, correct minor typos.
*1/2/3 to c.core. Debug and document symbol.symbol.
*ns* is now a regular Var. ns* becomes in-ns.

*ns* is now set by compiler.executeCode before each eval(), like in
clojure-jvm.  Namespace swapping is done by the in-ns special form
during compilation.
Remove automatic :refer-clojure. Breaks tests!

The ns macro does not refer-clojure yet by default, thus breaking tests.
The user namespace gets the mappings with an ad-hoc addition.
ns calls :refer-clojure.  Swap __name__ for *ns*.

resolve and require are now fns instead of macros.  Tests pass again by
correcting deftype, addind a root binding to *ns* and interning to core
the necessary symbols from core-deftype and core-multimethod.

Closes #101 (eval now uses *ns* instead of __name__).

__name__ is still used in the var macro because of the way tests
currently work / of the way the *ns* var is currently set.
Make sure CompilerException always gets 2 args.
Debugged namespace.find.

* There was an apparent typo in the way aliases were treated.
* None is returned for non-existent namespaces, instead of raising
    KeyError.
hasattr -> getattr, use str.format, minor changes.

* 3-argument form of getattr covers most use cases of hasattr.
* use new-style string formatting everywhere.
* nil?'s metadata was incorrectly set.
New semantics for require/refer/import.

* (refer ns-sym & filters)
  For each Var in the `ns-sym` ns, subject to filters, add a mapping in
  the current ns.
* (import package-sym & filters)
  For each Python object in the `package-sym` python package/module,
  subject to filters, add a mapping in the current ns.
* (require & args)
  Loads libs, creating corresponding namespaces.
* (use & args)
  Requires, then refers *AND* imports.  Relevant flags are passed to
  each form separately.
* (intern ns name), (intern ns name val)
  Same as clojure-jvm.

import foo =>          (require 'foo)
reload(foo) =>         (require 'foo :reload)
from foo import * =>   (use 'foo)
from foo import bar => (use '[foo :only [bar]]) (incompatible change!)
import foo as bar =>   (require '[foo :as bar])
Merge branch 'master' into macroexpand
Use *ns* rather than __name__ in macroexpand
Updated macroexpand tests
Avoid circular imports; add __file__ for namespaces.  Close #114.

Added a few docstrings.
Minor reformattings.

Initializing sys.modules[name] to None is a bit ugly but it works.
Update untranslated.clj.
Import prefers packages, fails if ns not created.

* If foo/{__init__.py{,c},__pycache__/__init__.<tag>.pyc} and foo.clj
  both exist, the first one will be imported.
* The assumption that foo.clj creates a foo namespace is now enforced.
threadBindings ctx-manager; docstrings; reorganize imports.

* with threadBindings(bindings): foo can now be used instead of
  {push,pop}ThreadBindings, wrapped in a try: ... finally: ...
* updated and added docstrings.
* group imports to top of files, removed unused ones, put them in
  alphabetical order.