Hide nghttp2_session_callbacks details and provide setter like functions

To make it possible to add new callbacks without bumping so name, we
decided to hide details of nghttp2_session_callbacks.  We provide
setter like functions to set individual callback function.
Use uint32_t for HTTP/2 error_code

h2-14 now allows extensions to define new error codes.  To allow
application callback to access such error codes, we uses uint32_t as
error_code type for structs and function parameters.  Previously we
treated unknown error code as INTERNAL_ERROR, but this change removes
this and unknown error code is passed to application callback as is.
Remove nghttp2_on_unknown_frame_recv_callback

It is not used by library for a while.  It could be used to pass
unsupported extension frames to application, but its interface
requires library to buffer entire frame, which we'd like to avoid.
For unsupported extension frames, we will add new callbacks which does
not require buffering if they are required.
doc: Update tutorials
Add nghttp2_on_begin_frame_callback

nghttp2_on_begin_frame_callback will be invoked when a frame header is
received.
Move nghttp2_data_source_read_length_callback to session callbacks section

Also edited its documentation to make hyperlink works.
Change nghttp2_session_get_stream_remote_window_size behavior

Now it returns only stream's available remote window size, without
considering connection level window size.  For connection-level window
size, nghttp2_session_get_remote_window_size() is added by this
commit.  To get old behavior of
nghttp2_session_get_stream_remote_window_size() is use
min(nghttp2_session_get_stream_remote_window_size(),
nghttp2_session_get_remote_window_size()).  The reason of this change
is that it is desirable to know just stream level window size without
taking into connection level window size.  This is useful for
debugging purpose.