Add PicardStage device adapter

This device adapter gives Micro-Manager the ability to control linear and
rotational (twister) stage motors by Picard Industries
(http://wwww.picard-industries.com). These devices are primarily used in
the OpenSPIM single-plane illumination microscopy platform
(http://openspim.org).

Please see http://github.com/openspim for full device adapter history
prior to its inclusion in Micro-Manager.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Remove dead code

A lot of code in PicardStage.cpp/.h was commented or #if'd out. Most of
this was XYStageAdapter code, which I guess we're scrapping. At any rate,
it doesn't belong in the production version of the code.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Update copyright/authorship

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Detect motors appropriately

This also switches to core logging in almost all instances. There is still
a single stdout usage, when printing the 'DAL built in debug' warning --
this will be changed and fixed up.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Constants, GenerateAllowedVelocities

Added some defined constants and GenerateAllowedVelocities to take the
place of duplicated code. This also re-fixes POSIX compliance, which
didn't seem to have been picked up from the main branch...

TODO: We might be able to make Allowed Velocities a global constant.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Add Velocity and min/max to twister

Needs testing.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
PicardStage: Inherit most properties

A holdover from the old days of MM DAL projects; many of our Visual Studio
project settings were set specifically (and unnecessarily, since we now
reference the MMDevice SharedRuntime). This also means referencing the
includes via relative path, but you can't win them all...

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Rename constants and use FIXED_TO_STRING

A preprocessor trick lets us easily convert compile-time constants into
strings. Make use of this.

Also rename most constants and shuffle them around a bit, into a more
logical order (on both counts).

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Add StepSize to Twister (deg/step) & use

The Twister has not yet had a concept of step size; add this in and make
use of it in the Twister's movement command.

Additionally, alter the stage's CreateProperty call for step size, to make
it unalterable after initialization.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Remove XY Stage's GetOrientation

After removing the #if'd out parts of this code, the entire method
effectively became dead code. Moreover, its implementation was confusing.
The direction of movement is still curious, and will need to be
investigated, but that is for later.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Add min/max properties and use them

The stage, twister, and X/Y stage were inconsistent in their
implementation and use of min/max properties. I've added them where
missing, altered GetLimits to use them, and used them to bound movement in
the SetPosition methods.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Refactor OnVelocity routine

They were all extremely similar, so I pulled that code into a static int
routine to handle the work.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Refactor OnSerialNumber behavior

As with OnVelocity, each class reacted very similarly to the
OnSerialNumber PropertyAction, so I removed the behavior to a single
routine.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Remove debug-build warning message

MM has their own build system; once this device adapter is upstream, they
will make sure the debug version is not distributed.

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>
Remove parenthesis around ternary operations

I'm told it may be confusing to parenthesize this operator...

Signed-off-by: Luke Stuyvenberg <stuyvenberg@wisc.edu>