Allow "20x" and "x20" syntax for resize, refactor PicturesController

1. The original PR proposed to make size: '300' indicate "infer height". in this PR,
'x300' maps to "infer width" and "300x" maps to "infer height". I find this slightly
more understandable (as the "x" indicates that something's missing, and which one).

The original tests had two conflicting test cases, one where size: '10' was to be
invalid, and one where size '40' was to mean 'infer height'. This is the point where
I had to change the API for this feature.

The other thing was that in the pictures controller, there was a ```#``` missing in a function
that is really just used for cropping with no crop_from data.

Refactoring:

* simplify and rename geometry_string functions
* there was some impossible to execute code (function takes mandatory args and then tests
  for their presence)