moving a lot of validation for cluster create requests from

solve time to request time, as well as adding additional checks
for required provider fields.
it's tested indirectly through cluster create tests, but once I move it into LeaseDuration I can add some more direct tests.