Added basic support for hash_behaviour=merge in roles

Dict vars passed to roles are now properly merged instead of simply overriding dict vars that are coming from vars_files.

This pull request probably needs more eyes, I'm not sure my overall approach to vars handling is good enough. Any suggestions are welcome!

Also, sorry for unintentional whitespace cleanup.
You can view the diff with less noise here:
https://github.com/ansible/ansible/pull/3114/files?w=1