Changes the way the whole system works. Prepares it for the automatic
evolution of classifiers when a segment comes into the scene.

Adds the "Invoker" abstract class as well as the "Visualizer" and the
corrected "VideoFeeder" interfaces.
Makes the whole system "Invoker" centric: all communications must go
through the "Invoker" object.
Makes the VideoFeeder passive: it no longer automatically passes frames.
The "Invoker" asks for the next frame.

Current bug: when a classifier is disabled in the visualizer, since it
is not seen by the system, a new classifier is evolved to replace it!
Makes the auto-evolution engine a little bit better however, still it
does not work the way it's supposed to. This commit was done before
removing the Positive/Negative Examples from the Job class. Still have
no idea why I put them there in the first place!!
Adds the unsupervised learning rules to the system. The unsupervised
learning
does the training step by step. The contract is that at any given
instance, there
is only one job queued on the GPSystem object. Orphan textures are first
recognized
and a classifier is evolved for them. If classifiers start to get
confused after
new textures are added to the system, then they are marked to be
destroyed and 
permanently removed from the system. This leaves some textures orphan
and this
means new classifiers will be evolved for them :-)

Also, some synchronization problems have been fixed: when "runCuda"
method of
the Visualizer is running, the set that contains all the evolved
classifiers
is locked (i.e. synchronized). This prevents GPSystem object overwriting
existing
classifiers with their improved versions. When "runCuda" is called, All
classifiers
are processed, the problematic ones are marked and unsupervised learning
rules are
enforced.   

 
CudaEvolutionState:
	fixes a critical bug: provided positive / negative examples are cloned
	for the sole purpose of being used by the evolution during a run. Other
	examples may be dynamically added to the system and this critically
broke
	the EvolutionState's functionality 

CudaInterop:
	Removes unnecessary Avg-SD filter logs

Invoker:
	The Invoker no longer requests any kind of evolution. Rather, the
Visualizer
	is the object that requests evolution or retraining
	
Job:
	The Job class no longer has its own positive/negative examples. All
positive/
	negative instances are handled via the classifier itself.

GPSystem:
	The queue capacity has been decreased to only 1. For unsupervised
learning, only
	one job should be scheduled on the GPSystem object at a time.

Classifier:
	Removed the "owner" field
	Added the "claimedSegments" field (required for unsupervised learning
rules)
	Removed notification of enability change
	Changed color selector -- the classifiers can now be initialized using
a
		broader range of colors
	Changed "equals" method: the equals no depends on the ColorUtilities
class

ClassifierSet:
	Removed some functions that dealt with enabled state notifications
	** The longest expression is no longer tracked: the maximum expression
length is
		now calculated on the fly! A bit slower but more robust.
		==> This effectively fixes the ArrayIndexOutOfBounds exception that
randomly
			occurred in the "getPointerToAll" method when executing
System.arraycopy
	"EnabilityMap" has been added to the class ClassifierAllocationResult.
This map
		determines which classifiers are enabled or disabled. The disabled
classifiers
		are still processed in CUDA, but are not displayed or overlayed.

CheckBoxList:
	The object was working in a broken manner: adding and removing were
partially
		broken and the updates were sometimes lost! This is no longer the
case.


GLVisualizer:
	All unsupervised learning rules have been added to this class. Most of
the
	changes were discussed above.