Multiple changes:
* Reorganized code a bit so methods and variables are better ordered
* Now uses initializer lists more extensively
* Assignment operator now frees old memory, even if assigner has a NULL
  record