Fix rcu_protected bugfixes and add test case (PLAT-555)

This fixes edge cases in the assignment of RcuProtected contexts and adds a test case.

Note that there is still a major bug, which can be exercised by removing the extra
explicit guards from the test.
added missing test file
Merge pull request #92 from datacratic/PLAT-555-rcu_protected-bugfixes

Plat 555 rcu protected bugfixes
Merge pull request #96 from datacratic/PLAT-554-SharedGuard-explicit-lock-unlock

PLAT-554 shared guard explicit lock unlock; pull request #92 (accidentally merged into the wrong branch)