allow function binding to operate on a key

in some situations, it's useful to have to bind on the function itself
since function evaluation is eager
make it so you can force a parameter-less function to eval

typically when eval gets down to a single function, it returns it,
but occasionally you want that function to eval