Added HangDetectorPropertyTask to the PropertyTask tests.

I want to add some tests that currently fail to detect a circular
reference, but running these tests (obviously) causes PHPUnit to
hang which is very unpleasant.

HangDetectorPropertyTask extends PropertyTask and uses a custom
HangDetectorProperties (extends Properties) that counts the number
of accesses. More than 100 is interpreted as an undetected circular
reference. Don't use big property sets when testing...
Changed test3 to testCircularReferenceDetection and added data provider.
Add two new PropertyTask tests where circular definition detection fails.

Below, A->B means resolves to B in some way, like A=xx${B}yy

Currently a chain like A->B->A will be detected in the
resolveAllProperties() function since we check each new property in the
chain against the property were trying to resolve.

This fails if we start to resolve A but the circular chain doesn't
involve A:
A->B->C->B->C->B....

These two tests reflect that.
For consistence, it's circular "Definition", not "Reference".
Fix for the tests testCircularDefinition1 and testCircularDefinition2.

In resolveAllProperties() we remember which properties from $props have
been used to resolve the current property. If the same property appears
twice, we have a circular property definition.

This will detect chains like A resolves to B resolves to C resolves to B...
Forgot to add file...
Merge pull request #249 from HuffAndPuff/fix-resolvehang

Fix for undetected circular definitions when resolving properties.