Added IsTaken to Guard and ReentryGuard

IsTaken is a decision property, it has little value in Guard because
another thread may take it any time. But having it in Guard enables to
have it in ReentryGuard allowing to know if the current execution is
inside the ReentryGuard and therefore preventing a reentry.
ArrayPool now takes adventage of IsTaken