Encapsulate record allocation into DynamicRecordAllocator interface.

Allow tests to reproduce array store layout without needing a real store.
Renaming and reformatting.
Restructure NodeLabelRecordLogic.

Use polymorphism to remove repetitive conditional logic.
Reduce coupling between field format and NodeStore
  (though they remain codependent for now).