Add some basic user documentation for the import/export tool

This document probably (nay, certainly) needs some review from the
docs team.  Additionally, this document is currently not linked
to from any of the other content.  It should probably be linked
from the upgrade.markdown, and perhaps from the FAQ as well?
Fix typo in kahadb troubleshooting doc and change title of FAQ

This patch fixes a title in the KahaDB docs, it also changes the title of the
FAQ to 'Frequently Asked Questions' to reflect its real purpose now that we
are attempting to create a more precise troubleshooting area.

Signed-off-by: Ken Barber <ken@bob.sh>
Add `sudo` to example sbin commands
Add links to `migrate` docs from other relevant places
Merge pull request #462 from kbarber/maint/master/troubleshooting_docs_cleanup

Fix typo in kahadb troubleshooting doc and change title of FAQ
Add command-prompt `$ ` prefix to example commands
Merge pull request #460 from cprice-puppet/feature/master/import-export-user-docs

Add some basic user documentation for the import/export tool
Extract garbage collection tasks to their own functions

This simplifies the GC loop, and lets us refactor those functions
independently, or break them out.
Add error handling to garbage collection tasks

This helps to make them more standalone, to more easily refactor the way
they're managed and invoked.
Use at-at to schedule garbage collection tasks

This relieves us from having to manage the lifecycle of these tasks
ourselves. It also makes them more flexible, by decoupling each task
from the others and making them properly asynchronous.

                  ________
              _,.-Y  |  |  Y-._
          .-~"   ||  |  |  |   "-.
          I" ""=="|" !""! "|"[]""|     _____
          L__  [] |..------|:   _[----I" .-{"-.
         I___|  ..| l______|l_ [__L]_[I_/r(=}=-P
        [L______L_[________]______j~  '-=c_]/=-^
         \_I_j.--.\==I|I==_/.--L_]
           [_((==)[`-----"](==)j
              I--I"~~"""~~"I--I
              |[]|         |[]|
              l__j         l__j
              |!!|         |!!|
              |..|         |..|
              ([])         ([])
              ]--[         ]--[
              [_L]         [_L]  -Row
             /|..|\       /|..|\
            `=}--{='     `=}--{='
           .-^--r-^-.   .-^--r-^-.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                __               __
         ____ _/ /_       ____ _/ /_
        / __ `/ __/______/ __ `/ __/
       / /_/ / /_ /_____/ /_/ / /_
       \__,_/\__/       \__,_/\__/
Convert TTLs to seconds before passing them to garbage collect functions

There's no need to do this every time. May as well simplify those
functions a bit.
Use Period objects for representing time settings

This lets us basically avoid having to track whether these have been
parsed/munged and what their units are, because we can just check that
they're Periods. It also lets us simplify a bit of code turning them
into seconds unnecessarily.
Add DLO compression
Fix use/require in command test
Specify encoding when creating tarballs

This was failing with the error "This archives contains unclosed
entries.", because we were calling `count` on a string to get the number
of bytes, without specifying the encoding to use. Now, encoding is a
required parameter for `add-entry` and `tar`, and is used to determine
the length of the data to be written.
Add metrics for DLO size and compression

This adds global and command-specific metrics for the dead-letter
office, including number of messages, number of archives, space usage on
disk, number of failures, and compression time. Overall values for
compression time, space usage, and number of messages are exposed via
the Dashboard.