Add focus alignment procedure

Instead of using the "raw" optimization tools, we should provide the user
functions that encapsulate the most common process setups. This change adds a
focus() function that takes a camera and a motor and tries to optimize the motor
position in order to get a sharp image.