Implement constrained pattern generator.

To support different optimization routines communication between solver
(provides context) and algorithm (finds solution/solutions to the cutting
stock problem, should be substitutable) was implemented based on the
strategy pattern.

Modification of the pattern generation procedure proposed by Vahrenkamp
was added. Using this procedure we can generate feasible patterns with
additional constraint imposed on the maximum number of cuts allowed
within one pattern.
Add reference implementation of Haessler's SHP.

Original version of the sequential heuristic procedure (SHP)
proposed by Haessler was implemented. Core classes were refined, as
well as more detailed documentation was added.