Make preview function work for manuals

The preview function had an issue with working on manuals and new
specialist documents. With specialist documents, the preview would only
render the body that had been saved so if you were making a new document
the preview would be blank and if you were editing a document's body, the
preview wouldn't render the changes you'd made. The preview function didn't
work at all with manual sections.

This commit fixes the 2 preview bugs and refactors the preview code to be
more reusable between different models.