Fix some pg_num change return codes and make them more resistant to mis-use

I noticed the issue with the return codes by inspection; the change to cap the size was implemented at the request of @athanatos.
Tested by turning on a small cluster and running each case, then looking at the text output and return codes (cases: pg_num 9999, pg_num 1, pg_num 8, pg_num, 64). All were correct.

There is one major caveat of this PR: a default-constructed pool (8 PGs) will need to go through multiple steps to reach a reasonable size (ie, go to 64 PGs, then 512 PGs, then real value). That's a UX regression but might be a useful cue to users that they need to understand what's happening...