dm cache policy: add version to dm_cache_policy_type

Introduce proper version support using 3 unsigned numbers corresponding
to major, minor and patchlevel version.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
dm cache metadata: store policy version in superblock

The policy version is useful to store in the superblock.  It will enable
us to know if the policy hints should be used or not.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
dm cache metadata: improve policy checking

Introduce policy_unchanged() and have it check that the policy name,
major version and hint size are all unchanged.

If the policy's major version has changed then it is assumed that the
hints are no longer compatible with previous versions of the same
policy.

Pass policy structure around rather than just policy_name.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>