Refined encryption keys

Made a new group that represents the prime power sub-group.
Created a factory method that returns a random prime power group.
Ensured that private keys are bounded by the prime of the current group.