Made raw/owned fields private

* Removed `pub` modifier from these fields
* Implemented accessors for these fields where appropriate
* Implemented `new_from_raw` unsafe constructors because they are
  sometimes needed

Fixes #111

I've changed all internal fields to private visibility. Mostly the change was painless, but unfortunately, Rust does not have crate-level visibility, so I had to create raw constructors because some of the structs are constructed from multiple modules. I've used macros to generate accessors, so if in the future we will need setters for these fields, they can easily be added.