types,runtime: make the ArgSource interface a bit narrower

Drop Arg(), KeywordArg() methods so it's easier to implement. They're
redundant anyways.
types,runtime: factor types.BasicArgs out of runtime.FunctionArgs

Also rename FunctionArgs to RuntimeArgs, since now it just embeds
BasicArgs and adds a pointer to the Runtime object. It exists so that
builtin functions have a back-door to access other runtime stuff,
notably the DAG.

This also lets me ditch StubArgSource: BasicArgs fulfills that role now.
plugins: expose builtin functions (mkdir(), etc.) to Python plugins

It's quite limited so far: you can only pass strings back and forth.
Specifically, function arguments passed from Python must be strings;
values returned by Fubsy functions are String()ed and converted to C
strings, then to Python strings.