Moved the bibtex parsing code out of a signal, and onto the model. Added model methods to generate slugs automatically and robustly, as well as synchronizing the citation key used in bibtex with the slug.
This refactor allows (and in future will allow even better) exception handling on form validation, so we can make the add/edit pages much more robust and user friendly (e.g. with relevant error messages explaining parsing errors) over time.
The add and edit forms have been adjusted, so that adding an entry does not require a slug (it is autogenerated from the content initially), but so that the autogenerated slug can be manually edited later.
A number of tests have been added, dramatically improving coverage from an appalling (30ish%) to a poor (56%).