mobile: Update the StreamCallbacks context to take a wrapper pointer
Because the envoy_http_callbacks context requires a void* so that it can store JNI's context too,
we previously created a new instance of StreamCallbacks from its shared_ptr, which was quite
confusing.
Instead, we create a wrapper class to hold the shared_ptr, and delete the wrapper class pointer in the
corresponding c_on_complete, c_on_error, etc. functions to trigger the shared_ptr destructor of
the underlying StreamCallbacks.
Unfortunately, it's not very straightforward to get rid of envoy_http_callbacks or remove the need
for a raw pointer since JNI uses the same interface, which passes in a raw pointer (in the form of a
jobject).
/wait
/retest
See the PR description for why we need the raw pointer and why getting rid of envoy_http_callbacks isn't so straightforward.
/retest
/retest