New genesis workflow:
* `gaiad init` is now used to generate an empty `genesis.json`.
* Genesis accounts need to be populated manually before running
`gaiad collect-gentxs`.
* This should support starfish too, see #2615 for more info.
* Closes: #2596#2615
* Validate validator address and address against respective account ex ante
* Fix local testnet failures
* New genesis tests
* Run make format
* Add --pubkey flag
* gaiad collect-gentxs takes no args
Rework the process of loading a genesis.json file to load a starting app state and set of initial transactions to process.
* New function to create genesis account from MsgCreateValidator
* Add arg to PrintUnsignedStdTx() to actually operate in offline mode
* New func processStdTxs()
* Remove gen-tx command
* Cleanup, return validators as they need to be written into genesis.json
* Modify gaiad init to allow auto-create of stdTx
* Remove server/testnet.go
* Don't load node_key.json, which might not be available
* Get the txs through DeliverTx
* Add app.slashingKeeper.AddValidators at the end of genesis
* On InitChain(), Signature's account number must be 0
* Add (tentative?) command to generate {node_key,priv_validator}.json files
* Reintroduce gaiad testnet
* Prompt user for passwords
* Update gaia to work with auth.StdTx
* Remove test_utils, NewTestGaiaAppGenState is now deprecated
* Combine --genesis-format and --generate-only
* Improve sign command's --offline flag documentation
* Moniker must be set
* Call app.slashingKeeper.AddValidators() even if len(txs) == 0
* Refactoring, introduce gaiad init --skip-genesis, code cleanup
* Drop unnecessary workaround to make lcd_tests pass
* Reintroduce gentx
* Simple name changes, GenesisState.Txs -> .GenTxs; OWK -> OverwriteKey; OverwriteKeys -> OverwriteKey
* pulling in stuff from fee-distr PR
* revert some gov changes
* fix using cons address, also remove old commented distr code
* doc update
* val comments
* remove GetValidatorByConsPubKey
* Update validator commission fields
* Remove CommissionChangeToday and update to use CommissionChangeTime
* Implement commission as a first class citizen type
* Implement stringer for Comission
* Move commission type and logic to new file
* Add new commission errors
* Add commission to create validator message
* Implement and call UpdateValidatorCommission
* Update godoc for UpdateValidatorCommission
* Add Abs to the decimal type
* Implement new SetValidatorCommission
* Update decimal short godocs
* Move set initial commission logic
* Move initial commission validation to Commission type
* Update initial validator commission logic and unit tests
* Remove commission update time from struct and move to validator
* Update validator create handler tests
* Implement commission logic for CLI
* Fix make lint failure
* Fix make cover failure
* Update edit validator logic to handle new commission rate
* Fix lint and cover
* Update create/edit validator simulation to include commission params
* Update MsgEditValidator godoc
* Update pending log
* Update staking tx docs
* Fix CLI create validator test
* Update variables names for commission strings
* Merge UpdateTime into Commission type
* Update create-validator usage in docs
* Update more docs with examples
* More doc updates