Allow generators to take keyword arguments

Sometimes not all data is present after parsing. To deal with this we allow the
passing of keyword arguments to generators. This is most useful in cases with an
automatic generated converter.
Add fallbacks for looking up parts of ids

If we aren't given all parts of an id we can use the keyword arguments. Then
failing that we will attempt to use a function to find the given part. The
function is configured using generator.lookup and is given the obj of data and
any given keyword arguments. It is expected to return something to use.