Changed plants_lib API to use a table for arguments, many improvements

When not using the legacy calling options, grow_plants and spawn_on_surfaces
now require a table with whatever options you want.  This opens the door for
even more features in the future. Changed flowers, junglegrass, poisonivy to
match.

Made plants lib faster in some places, especially the surface-hunting
algorithm, and especially over water.  Fixed a few other misc. bugs.

Made growth code properly execute all biome-control code before executing
any string-named function or spawn_tree().

Tuned flowers settings.  Made flowers require at least some light to spawn,
made waterlilies require shallower water.  Fixed a bug in water depth
detectiopn and water depth depend on whether the bottom of the water area is
dirt, dirt with grass or sand, rather than just anything.

Made waterlilies randomly rotate on spawning. to break up the patterns.
Smoothed edges of the regular waterlily texture.  Made all flowers and water-
lilies spawn using only 3 ABM calls instead of 8.

Got rid of color prefix node def overrides on all plants, since this is a
modpack now instead of an integrated mod.  Fixed a misspelled folder name for
poisonivy.

Fixed a bug in the wall detection routine - it returned the last wall found,
not the first.