Properly pre-parse args and kwargs (2014.1 branch)

**Hold off on merging, I'm working on additional commits to develop that I will cherrypick here.**

This adds in some fixes from develop, as well as some missing commits that didn't make their way into 2014.1.0, that change how kwargs are parsed. This will likely still be refactored a bit in the coming weeks.