Prevent multiple aliases to a single namespace

This is possible in Clojure:

    (ns my.ns
      (:require [my.foo :as f]
                [my.foo :as foo]))

This is, of course, due to the facile implementation of the ns macro.
Revealingly, this version fails:

    (ns my.ns
      (:require [my.foo :as f :as foo]))

It fails due to a duplicate key exception; libspec arguments are made
into a map via (apply hash-map libspec-args).

Currently, if a body of expressions contains multiple aliases to a
single namespace, Slamhound enters an infinite loop:

    (string/trimr (s/triml my-string))

    ;; 1. missing namespace "string" -> {:alias {clojure.string string}}
    ;; 2. missing namespace "s"      -> {:alias {clojure.string s}}
    ;; 3. missing namespace "string" -> {:alias {clojure.string string}}
    ;; …

We could change the map entry for the :alias key to {ns-sym #{ns-sym}}
to support this situation, but we would be forced to emit each alias in
a separate libspec.

Since both the idea of one-to-many aliases and the needed changes to
slam.hound.stitch are repellent, we will enforce one alias per namespace
during disambiguation.