Reduce memory footprint

Currently, Bounce2 uses 12 bytes of RAM per instance.
By packing a few of the boolean fields together, and reducing the size of the interval, I have reduced it to 8 bytes.

The interval_millis field should never realistically be set to over a uint16_t, which is 65535 (65.5 seconds).
A uint16_t is half the size of a long.

I also couldn't see why the read() function was returning a uint8_t, not a bool, so I changed it.