Add onMove veto/adjust semantics to polygon.onMove

Summary:
allows the onMove function for movable polygons to veto or adjust
the move similarly to onMove for movable points

Also adds an option to not make a polygon constrained to the graph
boundaries while moving.

A cursory grep through our code suggests that we rarely use
polygon.onMove and where we do, we don't rely on the move having
already occurred. In this change, the move will no longer have
occurred by the time onMove is called, to behave similarly to
the onMove semantics of movable points.

Test Plan: tested in perseus transformations tool

Reviewers: alex

Reviewed By: alex

CC: alpert

Differential Revision: http://phabricator.khanacademy.org/D4795