NAP Refactoring

The way NAPs are handled on the backend is unnecessarily complicated and bug-prone. The work for NAP warning + break history requires this to be refactored into something more reasonable.

This will also set the groundwork for Improved NAP terms.

This NAP Overhaul has been completed.