[RFC] semi-continuous/semi-integer variables; binary is first-class citizen again

Per #243, adds support for semi-continuous and semi-integer variables. While I was at it, I changed binary variables into a real thing, and not just an alias for general integer with 0/1 bounds (ref #242). This necessitates a change in the MPB layer as well, so while I was at it I changed it so that now we're passing around symbols indicating variable type, not cryptic chars. I've made the necessary changes in MPB, Gurobi, and CPLEX already, and I'll go ahead and do the other solvers (plus add tests) if this looks alright to everyone.