Reorder code and add docs to `current_*` methods
Reorder code and add docs to `current_*` methods

Reorders the methods since we usually go role, shard, then prevent
writes. I think it makes it easier to read.

Added documention to the methods for `current_shard` and
`current_preventing_writes`. These were originally marked as `nodoc` but
that doesn't make sense, apps may need to call these so we should make
them public.

lcreid/rails,tjschuck/rails,lcreid/rails,yawboakye/rails,vipulnsward/rails,esparta/rails,yahonda/rails,Envek/rails,betesh/rails,Stellenticket/rails,tgxworld/rails,vipulnsward/rails,georgeclaghorn/rails,bogdanvlviv/rails,bogdanvlviv/rails,Stellenticket/rails,georgeclaghorn/rails,tjschuck/rails,yahonda/rails,BlakeWilliams/rails,kmcphillips/rails,kmcphillips/rails,esparta/rails,rails/rails,joonyou/rails,kmcphillips/rails,tgxworld/rails,lcreid/rails,MSP-Greg/rails,Vasfed/rails,yawboakye/rails,MSP-Greg/rails,yawboakye/rails,MSP-Greg/rails,Envek/rails,betesh/rails,Vasfed/rails,MSP-Greg/rails,Envek/rails,bogdanvlviv/rails,kddeisz/rails,georgeclaghorn/rails,kddeisz/rails,georgeclaghorn/rails,Edouard-chin/rails,rails/rails,Edouard-chin/rails,Stellenticket/rails,kmcphillips/rails,Vasfed/rails,betesh/rails,Stellenticket/rails,eileencodes/rails,rails/rails,Envek/rails,vipulnsward/rails,yawboakye/rails,vipulnsward/rails,BlakeWilliams/rails,yahonda/rails,Erol/rails,lcreid/rails,tgxworld/rails,Edouard-chin/rails,bogdanvlviv/rails,tjschuck/rails,eileencodes/rails,esparta/rails,EmmaB/rails-1,tgxworld/rails,betesh/rails,tjschuck/rails,yahonda/rails,joonyou/rails,joonyou/rails,EmmaB/rails-1,rails/rails,Erol/rails,joonyou/rails,Edouard-chin/rails,EmmaB/rails-1,Erol/rails,BlakeWilliams/rails,eileencodes/rails,BlakeWilliams/rails,esparta/rails,kddeisz/rails,Erol/rails,kddeisz/rails,eileencodes/rails,Vasfed/rails