Improve hash ring value conversion

The current method for computing the point on the hash ring converts
the MD5 digest into a 4-byte integer (and assumes big-endian). The
digest is actually a 16-byte value, so we are eliminating much of
the value, thus increasing the possibility of hash collisions.

This patch does two things:

  * Removes the endianness assumption
  * Uses the full value of the digest to create a long integer,
    which has unlimited precision in Python.

Change-Id: I554ec46f506cb8cdfd5878c11a905a3acfe92db0
Add Node.maintenance_reason

When a node is maintenanced by Ironic or an operator, an operator
should know the reason for that. Add a string column to allow
Ironic or operators to enter a reason that the node is in
maintenance mode.

Implements: blueprint maintenance-reason

Change-Id: I7c77c92501e53f81704e9b9e5b52e0e2a410cc91
Merge "Improve hash ring value conversion"
Merge "Add Node.maintenance_reason"