Fibonacci Linear Feedback Shift Register using specified polynomial mask.
Generates a maximal length pseudorandom sequence of length 2^degree1, if supplied with a primitive polynomial.
Constructor: digital::lfsr(int mask, int seed, int reg_len);
 Parameters

mask   polynomial coefficients representing the locations of feedback taps from a shift register which are xor'ed together to form the new high order bit. 
Some common masks might be: x^4 + x^3 + x^0 = 0x19, K=3 x^5 + x^3 + x^0 = 0x29, K=4 x^6 + x^5 + x^0 = 0x61, K=5
 Parameters

seed   the initialization vector placed into the register during initialization. Low order bit corresponds to x^0 coefficient – the first to be shifted as output. 
reg_len   specifies the length of the feedback shift register to be used. During each iteration, the register is rightshifted one and the new bit is placed in bit reg_len. reg_len should generally be at least order(mask) + 1 
see http://en.wikipedia.org/wiki/Linear_feedback_shift_register for more explanation.
next_bit()  Standard LFSR operation
Perform one cycle of the LFSR. The output bit is taken from
the shift register LSB. The shift register MSB is assigned from
the modulo 2 sum of the masked shift register.
next_bit_scramble(unsigned char input)  Scramble an input stream
Perform one cycle of the LFSR. The output bit is taken from
the shift register LSB. The shift register MSB is assigned from
the modulo 2 sum of the masked shift register and the input LSB.
next_bit_descramble(unsigned char input)  Descramble an input stream
Perform one cycle of the LFSR. The output bit is taken from
the modulo 2 sum of the masked shift register and the input LSB.
The shift register MSB is assigned from the LSB of the input.
See http://en.wikipedia.org/wiki/Scrambler for operation of these last two functions (see multiplicative scrambler.)