Protect against zero by zero images.
Improve static typing of parsed text fields.
Improvements to layout.
Bump Log4s version.
Move ScalaFX utils into their own package.
Auto-resizing and variadic `calculate` function.

Auto-resizing means that the number of pixels per sample we use
when drawing a `QuadUnitSquare` will automatically adjust based on
the available space in the window. As you grow the window, you get
more pixel doubling; as you shrink it, you get less. (We always use
nearest-neighbor with no interpolation because showing big pixels is the
whole point of this application!)

The new calculate function uses Shapeless so we can define an observable
value that depends on the values of several other observable values.
This goes a long way to allowing you to do truly functional-reactive
programming with ScalaFX. Instead of managing lots of subscriptions, you
just declare that a value depends on several others by a given function.

Unfortunately, there's no way to get the Scala compiler to automatically
determine the types of the function arguments, so I have helper wrappers
for small numbers of parameters (less than four). These are also
tweaked so that they automatically suppress recalculation if the input
values haven't actually changed. (I'm assuming that you're using pure
functions, which gives large performance gains.)