Refactor analyzers

I wanted to be able to get the analyzers to a more declarative
state where they say /what/ they are doing but not necessarily
/how/

I did this by moving the actual computation work out into
separate methods and then composing them with LINQ
Cleaning up
Formatting
Documentation