Replcommands

***DO NOT MERGE YET***

@filipw I tried merging latest `dev` into the existing `replcommands` branch but it ended up in a massive merge commit and it was just too difficult to work with WRT diff'ing the history etc. so I went back to the original branch, rebased it, and cherry picked the three post-merge commits (ignoring the last commit which introduced the Arguments class).

This branch is now a straight line of commits from the line processors branch. I chose to work off that to avoid yet another round of potential conflicts later (with the hope that https://github.com/scriptcs/scriptcs/pull/725 will be merged soon). This PR will be updated with the syntax changes that came out of our discussions and will also be rebased onto dev after #725 goes in.

In the meantime, I had a few conflicts during the rebase which I had to resolve manually so, if you have time, it would be good if you could double check the changes on this PR to make all your work has remained intact.