showart: accept center argument which centers the piece based on term.width (closes #91)
Merge branch 'maze/refactor-engine'

Well, not quite a merge. Dingo's recent refactoring made merging a hell,
so I cherry picked some changes and did a bunch of other clean ups. The
idea is clear I guess, we now provide skeleton protocol Client, Connect
and Server base classes for people to extend. Hopefully this will invite
more people to implement other (exotic) protocols :-)

Added rlogin as a proof of concept.
log closing connection when shell not requested
Various attempts to squelch ssh errors

damn bots ..
shutdown transport, allowing that to close the socket
sauce: require version 1.0, please upgrade your local copies
server: abstract client_fds
showart: refactoring ahead!

We now support embedded font hints in SAUCE records! So if no encoding hint
is passed to the showart() function, it will:

  1. see if there is a font in the SAUCE record
  2. use the configured system.art_utf8_codec encoding
  3. fall back to CP437 encoding

This should greatly enhance the experience for UTF-8 enabled BBS users, as
they will see a piece rendered more closely to its original form (depending
on how well their font approximates the original one, of course).
refactor many attributes into @property
disable _tap_input workaround in matrix.py

until it can be functioned properly. tap_input
is only used in the rare cases of bad keyboard
input decoding, anyway.
list thread-id on connect
remove redundant shutdown log & deactivate call
Merge branch 'master' of https://github.com/jquast/x84

Conflicts:
	x84/engine.py
	x84/ssh.py
	x84/telnet.py
resolve connect_factory to `server' attribute

Managing conflict with maze's engine-refactor
only display userattrs getters when tap_db is True
fixed missing bracket
resolve unbalanced } in non-200 HTTP codes
log WARN -> DEBUG for unhandled do/dont/will/wont
Merge pull request #95 from megagumbo/master

fixed missing bracket
make 'ansi' TERMs default to cp437 again