Add iscr LP tool. Change self semantics.

A procedure nested in a struct now takes a pointer
as the self argument instead of a ref.