Start organizing the spec layout and leveraging shoulda-matchers

@dominicgoulet, please review this pull request to make sure you're okay with the changes