Preliminary support for supplying additional arguments to algorithms

Allow users to supply additional arguments to abbreviations or pre-trained
algorithms (e.g. FaceRecogntion(a=b) is now possible).
Arguments supplied must be key/value pairs, not positional. Any listed
additional properties will be assigned to the first matching transform
using a pre-order traversal of the algorithm tree.
In general, I feel like we can do a better job factoring out common logic in this function.