[MJ-966] edit_item refactor

The previous version was dispatching based on the URL, content id, partner id, and item id. This one disposes of the content id. The behavior in this branch is as follows:

* If the URL is `/prm/view/edit`, then then all other parameters are ignored and the "Add Partner" form is shown.
* If the URL is `/prm/view/details/edit`, then partner id must be valid, as we need to know which partner to associate the contact to. 
* If 0, "", or no contact id is given, it is assumed that a new contact is being created, and the "Add Contact" form is shown.
* If a valid contact id is given, then the "Edit Contact" form is shown with its fields populated with that particular contact.
* In all other cases, a 404 page is displayed

I also removed the requirement to add a primary contact when creating a group, since @galitskyd mentioned that was technically a bug. 

Depending on how this merge goes, I plan to do similar work on `save_item`.
I don't [think so](https://docs.python.org/dev/library/unittest.html#unittest.TestCase.assertRaises). That is, `assertRaises` takes a callable, list of positional arguments, and dictionary of keyword arguments, hence this ugly hack.