Modify I2C forward to use array_buffer_

Prior to this commit, the I2C forwarding code used a `buffer_with_len`
instance as a buffer to store the incoming command string.  This commit
modifies the I2C forwarding code to share the existing `array_buffer_`
instead, which reduces memory usage.
Add COMMAND_ARRAY_BUFFER_SIZE: array buffer size

Add `COMMAND_ARRAY_BUFFER_SIZE` define in main sketch file to set the
size of the command-processor array buffer.
Move pavement helper functions to proto.py

Move `pavement.py` helper functions to `proto.py`.  This should allow
new projects to more easily gain default behaviour by importing the
functions from `arduino_rpc.proto`
Fix pavement.py bug, fix read_string bug...

 - Fix `pavement.py bug`:
  - Prior to this commit, the `generate_command_process_header` function
    was calling `_generate_protobuf_definitions`.  However,
    `generate_command_process_header` should call
    `_generate_command_process_header`.
 - Fix `read_string` bug:
  - Since, as of 474663b, `read_string` interprets the call-back
    argument as a `UInt8Array`, `sizeof(buffer.data)` no longer returns
    the length of the buffer.  Therefore, the code has been modified in
    this commit to extract the length of the array through the `length`
    attribute of the `UInt8Array` instance.
Merge branch 'custom-buffers'

See #7.
Separate I2C request code into header
Add I2CHandler to library
Add first set of test cases...

 - Add test cases for the following methods:
  - `get_millis`
  - `pin_mode`, `digital_write`, `digital_read`
  - `str_echo` _(currently fails, see issue #8)_.
Replace `reverse_array` w/echo_array, add tests...

 - Replace `reverse_array` RPC method with `echo_array`.
 - Add the following tests:
   - `test_i2c_address`
   - `test_digital_pin`
   - `test_pin_state`
   - `test_str_demo`
   - `test_echo_array`

Known issues
============

 - `Node::str_echo` is not working.  See issue #8.
Merge branch 'unit-tests'