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. 
Yes. That is why all these ifs are needed. If metadata doesn't contain a pack field. we add it. The case where user specifies a pack_field but doesn't match the folder it's coming from is an interesting case. I currently throw an exception. We can silently ignore the pack field and override it with the pack but that might confuse the user. 

On a related note, st2 action create /full/path seems to register actions in default pack. In that case, pack field is required if you want that model to go into right pack.