Add Google test support for testing

"check" target for test run, dummy test added.
Add tests for fragment and iteartor

Iterator's decrement operation has been fixed accordin to tests.
More tests and iterator refactoring

Refactoring is pretty safe due to unit tests coverage.
Add tests for segment + refactoring after test coverage
Improve iterator constructor

Since we know which fragment contains tail() or head() of segment
we can transfer this info into iterator constructor to avoid
fragment search algorithm call.
Implement segment::size() as a distance between begin() and end()

to eliminate two different implementation of size calculation.
Distance execution speed must be the same as eliminated size() code.
Add segment::empty() operation which is useful invariant
Some refactoringand first compile for the streambuf code.

Where are no tests so mush, but the changes aren't functionality type.
Add fragment_put_size() function into basic_streambuf

The function represents memory size available for put operation in
current fragment.
Extract constrained fragment size calculation into function

For readability.
Remove unnessecary const_cast
Extract update_put()

So much different places to update put area pointers it is needed
to be refactored. This is the first step. Next steps need goot unit
tests code coverage.
Some tests for streambuf
Merge branch 'zerocopy'
hide test under CMAKE_BUILD_TEST
disable test 'config' it does not compile