generalize a bunch of boiler-plate type code for creating integers

This generalizes a lot of code in `int.jl`, with the goal of making it easier to create new bitstypes. While I realize immutable types have rather stolen the show, bitstypes are sometimes still nice. This reduces the number of boilerplate methods necessary to create a minimal bits type by 24!

@JeffBezanson @StefanKarpinski @ViralBShah OK to merge?

I'm also thinking of adding some generic convert, promote_rule, and arithmetic functions so that you can just call `bitstype <: Signed` (or Unsigned) and everything would pretty much just work.