begin major refactor

It's a major refactor.  The API is changing wildly (as per the README),
hopefully to make extensibility better.  Details follow.

* Connections
- use usocket for making inet socket connections

  At least with SB-BSD-SOCKETS we could make local domain sockets (fancy
  file descriptors?).  I didn't get that far in doing connections before
  refactoring, and I'm not super familiar with sockets, so I'm not sure
  how those map to usocket.
- name functions OPEN and CLOSE instead of CONNECT and DISCONNECT
- SSL connections are separate from non-SSL connections

  I may put it back to being just a single class.  The idea was to
  support more than one security method (like TLS) that requires
  different socket setups.

* Reader
- use flexi-stream streams instead of dumping into a line-string
- actually implement the data types

  As far as the reader is concerned, atoms, numbers, and NIL are all the
  same kind of thing in the lisp world: normal strings.  It is up to the
  response processor to make sense of what they should mean given their
  context.

* Unimplemented
- acknowledge Dovecot preauth

  By running a program as a system user, your IMAP connection is
  pre-authenticated.  No need for sockets.  No need for LOGIN.  Just
  connect and run.  That seems like a good connection type to implement
  eventually.
- do not expose the connection stream

  Reads and writes to the connection should use the reader and
  writer (as of yet unimplemented, but along the lines of SEND and
  RECEIVE) which will call the appropriate low level functions and set
  up any necessary handlers (dealing with continuation requests, for
  example).
- lispy interface

  Do things like rename mailboxes by doing (setf (mailbox-name mb)
  new-name) and have that call the necessary IMAP protocol stuff.