src/shared/gatt: Reference count multi-pdu GATT procedures.

Some GATT operations require multiple ATT protocol requests and
responses in sequence. The code previously did not set the destroy
callback of bt_att_send_sequential, as the operation structures would be
destroyed in intermediate steps, and instead explicitly cleaned up the
memory at the end of the operation. This would cause memory leaks, if
the ATT requests got canceled at any stage.

This patch makes these operations structures reference counted, so that
an unref function is passed to bt_att_send_sequential as the destroy
callback. This way, on cancellation and intermediate requests, the
operation structure will be properly unref'd.
src/shared/att: Remove unnecessary malloc's in response handlers.

This patch fixes the response handlers so that variable length value
data is passed to the callback by simply assigning a pointer to the
relevant location to the internal buffer to the response structure,
instead of copying it to a new array before passing it.
src/shared/gatt: Implement bt_gatt_write_long_characteristic_values.
tools/btgatt: Add write-characteristic-long command.
src/shared/gatt: Report operation status and error code separately.

This patch changes the bt_gatt_* callback signatures to take in a status
and an att_ecode argument, as opposed to having a single status argument
that reflects error code and operation status. This is because
operations can fail outside of ATT protocol errors.