Handle new npm atomic publish

As mentioned in #14 new npm clients now do a single PUT that contains the tarball inline.

They also handle 409 responses slightly differently, merging with the current state and re-doing the PUT to the same URL.


This branch adds support for new clients while retaining backwards compatibility. I've added tests and tried this out with both old and new npm clients