First pass at new singletons-based Vinyl architecture

I have removed the (sy ::: t) thing in favor of a singleton-based
approach, along with a Tarski-style universe encoding. So Vinyl records
are (implicitly) parameterized by a universe of keys; for each universe
of keys, you must provide instances of the El type family to show how
they get interpreted into Hask. I shall be providing some Template
Haskell to make this easier.

This greatly simplifies all the types in Vinyl. I realize that this
change is pretty jarring and may seem to scuttle certain existing
use-cases, but I believe it is for the best.

Moreover, I believe it was a mistake to allow signatures of the
following form:

    Rec [ "x" ::: Int, "x" ::: String ] f

In addition classes (Apply, Dist, etc.) have been removed and replaced
with simple functions where possible. The other option was to build up a
Category Theory class hierarchy which was sufficiently general to have
Vinyl's structure as a special case---but I decided against this since
it was very difficult, and served little purpose; the signatures are now
simpler and easier to understand.

A handy <<$>> operator has been given, which does just what it looks
like.

Closes #13, #25, #29, #36, #19.