Rank alias candidates by "alias" distance, then prefer initialisms

Where "alias distance" is defined as the number of insertions between
the first and last character of an alias necessary to create a
front-anchored subsequence of the candidate string.

This is meant to favor matching single-letter or straight subsequence
aliases, even when other candidates are shorter. Two common examples
include:

    s/replace should prefer clojure.string, not clojure.core
    st/join   should prefer clojure.string, not clojure.set

Currently, dashes are not recognized as word separators, although they
arguably should:

    (alias-distance "fbz" "foo-bar-zab") ; 6
    (alias-distance "fbz" "frobnobz")    ; 5

It's clear that the intent is to alias foo-bar-zab; we should be able to
address this in the future.

A somewhat common convention for aliases are initialisms:

    juc -> java.util.concurrent
    cji -> clojure.java.io

We try to detect these as a last resort before falling to the default
case.