Start some experimental changes on run-from-repl branch

May become part of master if it works out.  The intent is to make it
relatively straightforward to invoke Eastwood from a REPL, whether
started from Leiningen or not.

At the same time, make it easier to invoke Eastwood from another
program, e.g. something like Cursive or Cider, and give the invoker
better control over where output goes.

I haven't actually talked with Cursive/Cider/etc. developers yet to
see what they would need, but I will start with changes like these
under the assumption it will be something like what would be desired.
More changes can be made later if that becomes reality.
More run-from-repl experimental branch changes

I've tested on the crucible projects, and verified that the output
with these changes is nearly identical to the output before this
branch was created.  The only differences I know of are:

+ There are a few extra blank lines in the output after showing ASTs
  or other forms from the output shown when exceptions are thrown.

+ The message about writing files form-read.txt and forms-emitted.txt
  comes out slightly earlier than before, relative to other debug
  messages, when :debug #{:all} is enabled.

+ Some output produced by Leiningen at the beginning and end of the
  run are not controlled by these changes.  That is expected.
Fix #90: Debug printing of ASTs containing defprotocol Vars terminates

Done via removing some of the detail inside of defprotocol maps before
pprint'ing, which is find before debug printing, but should not be
done if processing the AST further for other reasons, e.g. linting or
generating code.
Do a better job of detecting when eval in analyze+eval throws exception
Replace munge-ns with tools.namespace's ns-file-name

munge-ns did almost exactly the same thing, except assumed Unix/Linux
path separators and I think did not work for Windows.
Attempt to get tests passing after previous commit
These changes should finish getting tests to pass on Windows
Make separate callback for handling lint warnings, with new info added to them

Add the following new keys to lint warning maps:

:absolute-file-name - A string containing the URI of the file
  containing the namespace.  It can also be of the form
  "jar:file:/Users/jafinger/.m2/repository/org/clojure/clojure/1.6.0/clojure-1.6.0.jar!/clojure/test/junit.clj"
  for a file inside of a JAR archive.

:relative-file-name - File name, as a string, relative to the current
  working directory, if it is inside the current working directory.
  If not, this is the same as the absolute file name.

:namespace-sym - A Clojure symbol that is the name of the namespace.

The values for these keys is identical for all warnings found while
linting the same namespace.

Note that the value of :file can be different than the file being
linted.  I am not sure yet of all of the cases where that can happen,
but I think one of them is when the warning is about some code defined
in a macro in a different file than where the macro is being used.
More futzing around trying to get things working on Windows again

Apparently resource names should always use '/' for the separator
character, not the platform-specific File/separator.
Bit of cleaning up of recent changes
Change lint-ns-noprint to use lint-ns with simple custom callback handler

that only collects warnings.  The test fn lint-test now removes any
keys it doesn't check for before comparing against expected results.
Rename eastwood.core to eastwood.lint

I'm tired of seeing core.clj in stacktraces with no indication of
whether it is Eastwood or some other project's core.clj file.