Modify find_MAP for discrete variables

This modifies the find_MAP function to better handle discrete variables.

This is accomplished in three ways.
1. Warning the user when discrete variables are used that MAP estimates may
be inaccurate
2. Using `fmin_powell` instead of `fmin_bfgs` as this seems to be more
likely to converge on actual values
3. Convert discrete values to their floor after minimization to reflect the
support of the underlying discrete variables.
Fixed overwriting of `fmin`

Fixes overwrite of `fmin` whenever discrete variables are present