engine : replace UPDATE_REPLACE with ResourceReplace exception

Replace the handle_update returned value with a new ResourceReplace
exception, which allows the replacement logic in resource.py and
parser.py to be cleaner

Change-Id: If652d031e8baeb8f4c6015e5ed2d0e5bb25f0fc6
heat tests : add coverage for instance UpdateReplace

Add some tests which test the UpdateReplace path for Instance

Change-Id: Ib9c35498c3ab2811fcd73aac8159315cb6251004
Instance resource remove unreachable/redundant Metadata update check

update_template_diff already throws resource.UpdateReplace if the
json_snippet contains changes other than to Metadata, so the else
here is unreachable and redundant

Change-Id: I9f0ad88d0b6fa65cafd5b2843a38913fa843a3ac
engine : move update_template_diff functions into Resource

Move the update_template_diff and update_template_diff_properties
functions into resource.Resource - since they now raise
resource.UpdateReplace we can avoid ever calling handle_update if
the resource update will result in replacement

Note a further cleanup will probably be to combine the two diff
functions into one recursive diff, which will further simplify this

Change-Id: I839f0c4448a2d869f35e0a4f19d17f31c5c6f9af