-----------------
* Full support for PATCH in the API and some resultant bug fixes to PUT.
+ Specifically, this means any resource that is allowed to have
attributes can now be partially updated using PATCH, because PATCH
operations have been made attribute-aware.
+ Attributes themselves cannot YET be partially updated, but we hope to
address that in a future... PATCH.
* Serializers
+ PATCH support enabled for complex objects: Attributes, Devices,
Interfaces, Networks.
+ ResourceSerializer subclasses now all inherit default behavior for
handling attributes. The ``.create()`` and ``.update()`` methods now take
an optional ``commit=`` argument to toggle whether to save an object after
updating attributes. This is so that descendent serializers subclasses
can overload this method and not call save until they choose (such as
in Interface serializers).
+ Each resource now has PUT and PATCH serializers broken out explicitly
to facilitate the "optional fields" nature of PATCH vs. the "mandatory
fields" nature of PUT.
* Attributes
+ All error messages raised when validating attributes include the word
"attributes" so that you know it's a validation error specific to
attributes.
* Bug Fixes
+ Bugfix in handling PUT requests where attributes would be initialized
if not provided. Attributes are now mandatory on any PUT requests and
will result in an error if they are missing.
+ Bugfix when assigning more than one IP address from the same network
to an
Interface that would result in a 500 error (and unit tests now catch
this).