Add the riak_kv_yessir_backend.erl storage manager for simulation purposes.

%% @doc riak_kv_yessir_backend is a backend for benchmarking Riak without
%%      any disk I/O or RAM constraints.
%%
%% Riak: "Store this key/value pair."
%% Backend: "Yes, sir!"
%% Riak: "Get me that key/value pair."
%% Backend: "Yes, sir!"
%%
%% This backend uses zero disk resources and uses constant memory.
%%
%% * All put requests are immediately acknowledged 'ok'.  No
%%   data about the put request is stored.
%% * All get requests are fulfilled by creating a constant binary for
%%   the value.  No attempt is made to correlate get keys with
%%   previously-put keys or to correlate get values with previously-put
%%   values.
%%   - Get operation keys that are formatted in with the convention
%%     <<"integer.anything">> will use integer as the returned binary's
%%     Size.
%%
%% This backend is the Riak storage manager equivalent of:
%%
%% * cat > /dev/null
%% * cat < /dev/zero
Fix cut-and-paste-o, comment out broken tests
Add variable latency todo
Add 'yessir.' prefix to get_binsize/1 check
Add chat bot notification.
Use a sliding one minute window not a EWMA meter

Remove dep on basho_metrics
Merge pull request #359 from basho/rdb-spiral-not-meter

Use a sliding one minute window not a EWMA meter
Track node gets and puts with a spiral stat

When using the `slide_uniform` sample type for the node puts / gets
histogram, the one minute count will be inaccurate for very small
and somewhat large numbers of readings. `Folsom` (actually `bear`)
only calculates the histogram when there are 5 or more readings.
The `slide_uniform` sample type holds a maximum number of 1028
readings per second by default, so nodes with greater throughput
than that will show lower than actual one minute counts. Using
`spiral` for the get / put count solves these issues.
Merge pull request #361 from basho/rdb-spiral-gets-puts

Track node gets and puts with a spiral stat
When converting riak_object to JSON, treat usermeta as a struct even if it's empty.

This prevents the case in the Java client where a "map" is expected
for the usermeta, but instead the JSON form contains an empty
list. Along with basho/riak_pb#10, this resolves the regression in the
Java client integration suite.
Merge pull request #363 from basho/sdc-fix-empty-usermeta

When converting riak_object to JSON, treat usermeta as a struct even if it's empty.
Use the pb stats from riak_api

Riak_api does not depend on riak_kv so couldn't call
riak_kv_stat:update/1. Riak_api has its own stats, use them
and make them backwards compatible.
Merge pull request #364 from basho/rdb-use-api-stats

Use the pb stats from riak_api
Add Referer header validation
Add check for "null" origin header
Merge pull request #365 from basho/dss-null-origin-check

Add check for "null" origin header
Roll version 1.2.0
Add the riak_kv_yessir_backend.erl storage manager for simulation purposes.

%% @doc riak_kv_yessir_backend is a backend for benchmarking Riak without
%%      any disk I/O or RAM constraints.
%%
%% Riak: "Store this key/value pair."
%% Backend: "Yes, sir!"
%% Riak: "Get me that key/value pair."
%% Backend: "Yes, sir!"
%%
%% This backend uses zero disk resources and uses constant memory.
%%
%% * All put requests are immediately acknowledged 'ok'.  No
%%   data about the put request is stored.
%% * All get requests are fulfilled by creating a constant binary for
%%   the value.  No attempt is made to correlate get keys with
%%   previously-put keys or to correlate get values with previously-put
%%   values.
%%   - Get operation keys that are formatted in with the convention
%%     <<"integer.anything">> will use integer as the returned binary's
%%     Size.
%%
%% This backend is the Riak storage manager equivalent of:
%%
%% * cat > /dev/null
%% * cat < /dev/zero
Fix cut-and-paste-o, comment out broken tests
Add variable latency todo