Change hard, soft heaps from Alphalist to StringSet

Elaborate EvalContext API to making it more opaque.

Bonus: declare StringSet directly in set.h (move this out in separate header
if you are religious about this).