Add edit, less and code_* macros, mirroring which

~~Also add methods for edit and less that take `::Any` vararg (again, mirroring which), and specify that the previous definitions take a tuple of `::(DataTypes...)`.~~

This was remarkably easy with the recent refactoring of `which`.  The number of changed lines is deceiving due to the indentation of a for loop (over `:which,:edit,:less`, and now additionally `:code_typed,:code_lowered,:code_llvm,:code_native`) and an `@eval` block around the existing `@which` definition. ~~The only real changes required were to change `:which` to `$fname` and adding the equivalent method signatures.  Pretty cool that it just works.~~

I've since modified to macro to determine the types of the arguments itself.  This prevents a potential ambiguity between an argument that happens to be a tuple of types and specifying the types of the arguments.  But to make this work for all of the above functions, `which(f,args…)` needs to be deprecated in favor of `which(f,types::(Type…))` (or the macro itself).  Both can co-exist, but there's that very small corner case of the ambiguity in discerning which `which` the user is asking for.