buffered_request_stream reworked.

- 'last chunk' logic fixed.
  If request size was multiple of chunk_size, handler received
  real last chunk without last_chunk flag.

- on_chunk() method is called from within single thread.

- internal m_state is cleared before on_chunk() call.
  Before if handler calls try_next_chunk() from on_chunk() method
  it leads to infinite recursion.

- want_more() call after on_chunk() must rely on actual remaining data size.
  If content length is multiple of chunk size, try_next_chunk_internal() call
  with last chunk's data will produce excess want_more() call, that may lead
  to actual read from socket and get 'End of file' error.
reply's send_error() method fixed.

Due to documentation about the method in comment section in stream.hpp
send_error() is a shortcut for:
* ioremap::http_response response(type);
* send_headers(std::move(response), boost::asio::const_buffer(),
* std::bind(&reply_stream::close, reply, std::placeholders::_1));

Before it called send_headers() method with close_impl() callback and close()
that led to another close_impl() call.
connection: clear m_content_length on next request.
connection: terminate connection on invalid url and if appropriate handler is not found.
connection: unnecessary code removed.