RFR: Fix action registration validation

Action registration now uses same validation as actions API. This will fix a lot of issues where registration can let some models pass through but actions list API will break. 

This also uncovered another bug:

In some action models, we write runner-type: foo and in some, we write runner-type: {'name': 'foo'}. 

I can either fix st2contrib to always use str or I can fix the code to handle both str and dict. I am in favor of fixing st2contrib. 
Also, action metadata doesn't need and shouldn't define `pack` attribute anyway, right?