Move the reading of layouts into its own class.

Refactor the reading of layouts into its own class because it's not Site's
responsibility. This will also give us more flexibility when we start making
more changes to the rendering process