regrow/candidates now return sets of symbols

Instead of returning a form for direct insertion, #'candidates now
returns a set of symbols representing the classes or namespaces that
satisfy the given constraints.

The :require-as and :require-refer keys have been changed to :alias and
:refer respectively to match the keys in the new nsrefs map.

The `missing` parameter is now always a symbol as it is more convenient
when working with the keys from ns-publics.

Finally, #'candidates is now public with its own unit tests.
Add regrow/filter-excludes and regrow/filter-renames

We can now use the old ns data to determine if the user wishes to
exclude or rename some namespaces's vars.

This is particularly useful for libraries like core.logic that recommend
replacing many vars in clojure.core; it is annoying when slamhound
inserts (:require [clojure.core :refer [==]]) when you intended it to be
excluded.
Remove regrow/filter-renames and don't bother with renamed refers

After trying to overload the :refer candidate path to handle renames, it
has become clear that the proper way to handle :rename maps is to return
a separate :rename entry from failure-details.

Since this var renaming feature is so rarely (perhaps never?) used and
adding support for renames comes at a moderate cost, we will ignore
:rename in the old-ns for now.
Add :xrefer, :refer-all, and :reload-all to default-ns-references

Adding new key-value pairs to the parsed ns-map is easier to deal with
than adding :all as a possible value of :refer, :exclude, and :reload.
Change stitch fns to handle new -all entries
Use :xrefer and :refer in regrow/filter-excludes
Fix whitespace
Add regrow/grow-ns-step

Incomplete replacement for grow-step. Parameters are reordered to:

        [ns-map type missing body]

because grow-ns-map is primarily a function of ns-map -> ns-map. The
other three parameters are in the same order as the parameters for
(candidates).
Add type parameter to filter-excludes

This way filter-excludes can be called with the same parameters as the
new #'disambiguate
Add new regrow/disambiguate

Not yet complete, but now contains filter-excludes, which is a new
addition compared to the old version
Make regrow/filter-excludes private

I am not a fan of private functions, but since slamhound does hide some
functions, we will expose disambiguate and hide its component functions.
Rewrite regrow/in-originals-pred for new ns-map

Now that we have data instead of ns clauses, we can accurately determine
if a candidate existed in the old ns map, regardless if it was an
import, alias, or refer.

This should address #26: "Use old ns form to disambiguate potential
classes for import".
Add last-segment-matches-pred to disambiguator
Prefer shorter candidates when disambiguating
Remove newly unused code in slam.hound.regrow

New code and tests now supersede old forms at all points.
Change disambugating predicates to return numbers

Issue #22 and commit 835a6717e70a602e7fb2015ce8cd46016d44900e describe
a preference of directly referred vars over implicitly referred vars
through :use or :refer :all.

In order to implement this we change the disambiguating predicates to
return numbers instead of bools. This allows expression of non-binary
preferences, which may also be useful in the future.