Added logging for retracting. 

Changed retract to use identifier since types having to be unique is too
restrictive. This implementation did the remove in the execution results
however, since that is only place the identifier you placed during
insert is visible. I don't like this as much as previous method which
performed the retract at beginning of next run since if you receive some
invalid fact that causes execution to fail, it will keep happening and
you will never remove it until you dispose of the session entirely. 

I next tried to create a custom ObjectFilter to filter on these
identifiers, but I was unable to since the execution context really
seems to be the only place these identifiers exist. There was no object
I could access them from in the working memory.

Next I created an interface to store my own identifier and now require
all data classes that want to be added as facts in a stateful session to
implement it. I set this identifier during insert command and used it in
conjunction with custom ObjectFilter to retract on next execution.