Added opSlice and opIndex to allow '[]' in constraint expressions.
Refactored the cstx module and separated out translateExpr.

This would be useful for handling index/slice expressions and if-else
blocks in the constraints -- both of which might have an expression as
part of the syntax.
Fixed some issues with obdd and rand modules.
Encapsulated the constraint translator into a struct.

This will help refactor the cstx module.
Use dry run to calculate the size of the constraint code.
Fixed some code consistency issues in cstx module.
Added capability to translate just a constraint expression separately.
Added capability to handle if conditionals.

Still more work required for else block processing.
Added constraint processing of else blocks.
Dynamic array lengths are now constrained differently.
Added code for implicit enum constraints.
Now mixin(randomization) is required.

This is required to resolve any references to the values that are
defined outside the scope of the randomized object but are visible in
the scope. There does not seem to be any other way than using a mixin.
Merge pull request #6 from puneet/master

Allow constraints on enums.