User Func names made unique; pass Image as Func
Can now also treat Buffers as Funcs.

Treating Images as funcs now goes via Buffers.
Track unique func names using a map instead of a set

I was concerned about the pathological case where you generate
a halide function with the same name over and over inside a
long running program, or in an inner loop. I'm not sure when this
would come up - perhaps during aggressive autotuning.