Add status types and implement transfers-limit

For all status types, we should define an explicit data format. The
purpose of this format is to allow different front ends to render the
output. The status types currently defined live in
riak_core_status_types.hrl.

The generic parser of status types lives in riak_core_status:parse/3.
The specific callback functions that do the actual formatting of the
output for the console live in riak_core_console_writer. The functions
riak_core_console:transfers_limit/{0,1} actually use the writer and
print the output for the new implementation of
`riak-admin transfers limit [Node]`.

Additionally add autosizing to riak_core_console_table

When calling riak_core_console_table:print/2 without a spec including
sizes, the table elements will be sized according to the maximum length
of element in each row. If that all fits within the console width,
including borders, then it is printed. If it does not fit, the elements
are reduced in size until everything fits on screen. If the console
width is not detected with io:columns() then the default value,
?MAX_LINE_LEN=100 is used instead.
Having done similar work in the past, I can understand why we're embedding column/row concepts this deeply into the status code, but I'm not sold on error conditions being coerced into the same representations.