Have it use accurate sizes for conv inputs.

Before, it used the base image size for everything, which didn't
work for more than one convolution layer.
Calculate input layer size automatically.

This is actually more work than it sounds.
Add support for custom conv layer activations.
Remove unnecessary override and fixed random seed.

Now it uses random values for the convolution weights that are
different every time.