monitor skips hosts marked dead or down

Host don't define readability/writability themselves, so the
Host::should_get_new_files sub is renamed to "alive" and
Device->can_read_from respects host status.

Also, queryworker now skips down/dead hosts in cmd_get_paths.

ref: http://code.google.com/p/mogilefs/issues/detail?id=46
Device->observed_* all respects observed host state

The observed unreachable state of the host should always supercede the
observed state of the device.  This is already the case with
observed_writeable, but not with observed_readable nor
observed_unreachable.

The monitor worker does not (and should not, to save bandwidth) update
states of all devices when a host goes down.
Device->should_read_from respects all host/device states

should_read_from() should replace all uses of can_read_from() in
non-Monitor workers.  This avoids the overhead of needlessly
rechecking devices either the monitor or user marked down.

This simplifies queryworker logic a bit.
DevFID size/checksum respects Device->should_read_from

Avoid needlessly attempting connections for checking files on
host/devices the monitor (or user) marked as unreadable.

This also makes the Fsck->size_on_disk function redundant.
get_paths: deprioritize devs in "drain" state

URLs pointing to devices set to drain are undesirable.
Files may disappear off draining devices immediately
after we've queried the file_on table and invalidate
the paths the client sends us.
t/00-startup: explicit fid test for create_open/close

This is mainly to prevent bugs like the fix in
commit ac5534a0c3d046e660fa7581c9173857f182bd81
from popping up again.
connection/mogstored: remove sock_if_connected()

This subroutine has been unused since MogileFS 2.52
commit 18a40d29236a8a00593f914191c9fd16cda082db
("Throw out old HTTPFile->size code and use LWP")
test for existing case-insensitive list_keys behavior

We cannot break existing case-insensitive behavior for list_keys
right now, even if it's broken.  This means SQLite/MySQL will
use case-insensitive LIKE statements for list_keys and Postgres
remains case-sensitive.
implement "case_sensitive_list_keys" server setting

Enabling this boolean will make the "after" and "prefix" params
of "list_keys" behave case-sensitively.

If this setting is /not/ enabled, clients will hit
after_mismatch errors when iterating through keys if they are
using an uppercase "prefix" argument and a subsequent list_keys
is called with an "after" that only matches case-insensitively.

If unset, this defaults to false (0) to match historical (buggy)
behavior.  Historical behavior is preserved (even if broken) as
users with small namespaces may rely on case-insensitive
matching.

Postgres users are not affected by this change, as the LIKE
operator in Postgres is always case-sensitive.

This change is tested on all three databases: Postgres, MySQL,
and SQLite.
t/02-host-device: unit tests for device/host state checks

Device state reporting functions should respect whatever the
underlying Host state is.
Delete memcache data when we replicate fids

Because memcache TTL is now user configurable, data in memcached might
be valid for a long time, and as such invalid paths might be returned.

It would be possible to populate memcache, instead of just removing. But
it might be wasteful when a device is marked as dead, those replicated
fids might not need to be in memcached.

There is still one TODO left. If someone modifies mindevcount and runs
FSCK, then the mappings might become incorrect, but I reasoned that it
would be rather rare.