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. 
Ah, thanks, I got it - we need to support a use case of specifying a pack in case user explicitly registers an action using the API.

Maybe it would be good to document this here :)