Misc cleanups:
* (typo) `highflag` => `highflag1`
* (typo) `lowflag = x = 0` => `lowflag == x == 0`
* Add structure and table of contents
* Describe more notation in words (e.g. `i`)
* Make sure flags are 1-bit
* Clarify and polish presentation
Example notation cleanups:
* `G1` => `id_G1` (to avoid confusing with the group G1)
* `field_modulus` => `q` (avoid using two names for same thing)
* `BLSVerify` => `bls_verify` (respect notation for functions in main document)
* `sig` => `signature` (avoid abbreviations as in main document)
TODO:
* Potentially describe `FQ2`, `b2`, `is_on_curve`, `multiply` in words
* Make the naming changes around `bls_verify` in the main document
* Fix any bugs introduced by the cleanup
* (cleanup) Rename `SQRT_E_DROP_TIME` to `INVERSE_SQRT_E_DROP_TIME` to reflect `1/sqrt(e)`
* (cleanup) Justify why it's called INVERSE_SQRT_E_DROP_TIME
* (cleanup) Polish and simplify presentation
* (bug fix) Fixed 2**34 value
* (bug fix) Replace epochs with slots to make the calculations work
* (cleanup) `SpecialAttestationData` => `CasperVotes`
* (cleanup) `vote_1`, `vote_2` => `votes_1`, `votes_2`
* (bug fix) Place a bound on the number of votes with `MAX_CASPER_VOTES`
* (bug fix) Supply `state` when calling `verify_casper_votes`
Cleanups
* Use `state.slot` over `current_slot`.
* Specify `new_status`
* Segregate ejection processing
Bug fixes:
* Put ejections at the end of the per-slot processing (TODO: per-slot processing should come *after* per-epoch processing)
* Immediately exit ejections
* Include `ACTIVE_PENDING_EXIT` as an active state
* Renamed two `State` to `BeaconState`