Rewrite block rules to calculate their own blocks

Summary:
Following a simple request... T3321

Fixes T3321

Test Plan: Unit tests... eventually

Reviewers: epriestley

CC: aran, Korvin

Maniphest Tasks: T3321

Differential Revision: https://secure.phabricator.com/D6319
Add some block tests for D6319

Summary: See discussion in D6319. These tests cover the behavior of certain weird block edge case which we should preserve.

Test Plan: Ran unit tests.

Reviewers: garoevans

Reviewed By: garoevans

CC: aran

Differential Revision: https://secure.phabricator.com/D6325