Untangle incoming and publishing api models

This change moves responsibilities between `Manual`/`Section` and `PublishingAPIManual`/`PublishingAPISection` to make the code less awkward to reason about.

This PR also indirectly fixes the issue of exceptions upon invalid/empty payloads, so it supersedes #39.