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. 
I find those ifs slightly confusing.

It seems like we always want to use `pack` argument which is passed to the method so those ifs are redundant / confusing.