Adds a data-driven ng state for ntp

Note: this one does not require the fancy-pants pillar merge param in helium so should be useable by anyone.

Apologies for the commit spam, there was a gap prior to submission that made for ugly rebases.