Initial commit

Definitions of core data structures
Implementations of essential functions
Basic inline documentation
Update gitignore, change to .h file Copyright line