Preserve file comment headers

Comment headers in files often contain important metadata about the file
(copyright, license, contact information) that should not be removed.

A note about the implementation: read-comment-header can be implemented
in ~3 lines by using .readLine. However, .readLine discards newlines, so
slamhound would have to make an assumption about what newlines have been
discarded, which is a mistake.

e.g. Editing Unix source files on a Windows machine would produce \r\n
     line terminators if we join the header lines with
     (System/getProperty "line.separator")
Fix multiline docstrings

Commit e66a40683e2ebf94a1e3bea53706c55ab879c7cd fixed unintentional
unescaping of docstrings, but also broke multiline docstrings:

        (ns example
          "Foo
           Bar
           Baz")

        =>

        (ns example
          "Foo\n   Bar\n   Baz")

This approach manually escapes \ and " inside of docstrings, but leaves
newlines and other characters as is so that the string is reprinted as
intended.
Revert "clojure.test is always :refer :all"

This reverts commit b7b34720d28946fc2597f0872547ab451679cc3c.

"I'll be more opinionated then: fewer special cases is good. =) I agree
that clojure.test shouldn't be a special case."

        - technomancy

https://github.com/technomancy/slamhound/issues/29

Conflicts:
	project.clj
	src/slam/hound/stitch.clj
Honor existing :refer :all requires

From #29

> The ability to add :refer :all namespaces on a per-project basis might
> be good

I think that's a great solution.

> but I haven't figured out a clean way to pass configuration options to
> slamhound

A no-configuration way is to simply honor existing :refer :all imports
and move on (but not :use!). When the user decides he'd like to tidy his
namespace, he can simply remove that expression and re-run Slamhound.

https://github.com/technomancy/slamhound/issues/29#issuecomment-22086914
Merge pull request #49 from guns/fix-ns-multiline-docstrings

Fix multiline docstrings
Merge pull request #47 from guns/preserve-comment-headers

Preserve file comment headers
Merge pull request #50 from guns/honor-existing-refer-all

Honor existing refer all
Run slamhound on self

With clojure.pprint/*print-right-margin* set to 80.
Do not truncate original file until after reconstruction

Fixes regression introduced in 3c058a0a42efe1fab12430a2cd55b3c220d7a5af
(preserve comment headers).
Avoid excessive tempfile creation

Use of .deleteOnExit with tempfiles is convenient and has no practical
downsides when running slamhound from the command line.

However, when used from a persistent REPL the number and size of
tempfiles can grow to a non-negligible quantity. For instance, many
Linux distributions use a ramdisk (tmpfs) for /tmp; running slamhound on
a large file repeatedly can quickly consume megabytes of RAM.