Extracted everything from lib.rs Also extracted all doc tests to integration tests.
Almost ready for publishing in crates.io.