Change default RPC port to 8334 (18334 testnet).

This change paves the way for running btcwallet on the same system without
having to change any settings.  The well-known ports used by the
reference implementation (8332 mainnet, 18332 testnet) will be exposed by
the separate wallet process, which will in turn forward unknown requests
to btcd via websockets (on 8334/18334).  This allows the wallet process to
ultimately provide a unified interface that exposes the same RPC-JSON API
as the reference implementation will maintaining wallet and chain
separation.
add setLimits stub for plan 9
give btcctl some options instead of using hardcoded values
Clean up notification contexts and goroutines after ws disconnect.

This refactors the wallet notification code to reverse the order of
how notification contexts are stored.  Before, watched addresses and
outpoints were used as keys, with a special reply channel as the
value.  This channel was read from and replies were marshalled and
sent to the main wallet notification chan, but the goroutine handling
this marshalling never exited because the reply channel was never
closed (and couldn't have been, because there was no way to tell it
was handling notifications for any particular wallet).

Notification contexts are now primarily mapped by wallet notification
channels, and code to send the notifications send directly to the
wallet channel, with the previous goroutine reading the reply chan
properly closing.

The RPC code is also refactored with this change as well, to separate
it more from websocket code.  Websocket JSON extensions are no longer
available to RPC clients.

While here, unbreak RPC.  Previously, replies were never sent back.
This broke when I merged in my websocket code, as sends for the reply
channel in jsonRead blocked before a reader for the channel was
opened.  A 3 liner could have fixed this, but doing a proper fix
(changing jsonRead so it did not use the reply channel as it is
unneeded for the standard RPC API) is preferred.
Add blockmanager.current with extra checks for whether we are up to date.

This uses peer state to confirm if we are up to date, as well as what
chain thinks.
Peer: use QueueMessage instead of directly using the channel.
Make it possible to get a notification when a message has been sent.

If a channel is passed in then true will be sent on the provided channel
after the message has successfully sent.
Remove stale comment.
Remove prevGetBlocksMutex.

This is only ever accessed from one place (blockmanager) which is single
threaded.
Add an idle timer for peers.

If we don't hear from a peer for 5 minutes, we disconnect them. To keep
traffic flowing we send a ping every 2 minutes if we have not send any
other message that should get a reply.
add getrawmempool to rpcserver
fix getbestblockhash
add decoderawtransaction, getbestblockhash, getdifficulty, and
getrawmempool to btcctl.
Correct reply for getrawmempool RPC command.

The RPC command needs to return a slice of hash strings, not the
underlying *btcwire.ShaHash bytes.
fix reversed variables in a warning message.
Make quit channel with RPC server.

The latest websockets code added a quit channel to the RPC server, but did
not initialize it.  This commit corrects that so shutdown works properly
again.
Remove possible nil pointer dereferences.

Results from FetchTxByShaList must each be checked for a nil Err and a
non-nil Tx.  Fix this issue in two places where these conditions were
not being checked.
add getconnectioncount to btcctl
add getconnectioncount skeleton to rpc
add getpeerinfo to btcctl