pretty major refactor ready for c++11 development

specifically:
- separates implementation from interface to solve dependency issues
- fixes inconsistent style
- header guards switched to pragma once
- revisions to public interface
- switch over from c++03/c++11 intermediate types like std::tr1::/std::tr2:: stuff