Refactoring

* Refactored a lot of code
* Improved Test Coverage to 100% - https://coveralls.io/builds/865416

1. `.coveralls.yml` - Newline at the end
2. `Gemfile` - Uses a faster source for gem installations
3. `app/controllers/application_controller.rb` - Removing the custom devise parameter sanitizers and extracting that to a private method only for the devise controller. This is less buggy as their are not loading problems in this solution. So, this fixes the `Uninitialized Constant User::ParameterSanitizer` error that one gets, many times in the development environment.
4. ` app/controllers/articles_controller.rb` - Reducing an extra instance variable by making use of associations between the User and Article model.
5. `app/controllers/authentications_controller.rb` - Moving the fetching of the youtube_user_name to the link with youtube method so that the project show page does not fail when geocoding service is down.
6. `app/controllers/documents_controller.rb` - Using shorter render syntax and adding a else condition to the mercury saved block.
7. `app/controllers/events_controller.rb` - Switching only with except to use fewer characters.
8. `app/controllers/projects_controller.rb` - Switching only with except and moving the fetching of documents to a before_action from the helper. Removed the unnecessary `@members` instance variable from the show action. Using the associations to create a new project belonging to current_user instead of manually adding in the `user_id`. Removed a the `if current_user` in follow and unfollow since they are checked in the before_filter. Improved PivotalTracker error handling as previously it was rescuing all application wide exceptions.
9. `app/controllers/registrations_controller.rb` - Removed the preview action as it is never used and made the code more concise.
10. `app/controllers/users_controller.rb` - Changed the way to youtube videos are fetched to use the new YoutubeService.
11. ` app/helpers/application_helper.rb ` - Removing unused and useless methods.
12. `app/helpers/articles_helper.rb` - Better Error Handling.
13. `app/helpers/documents_helper.rb` - Removed helper method which was extracted to a before_filter in the documents controller. Reduced the if conditional in `metadata` to one line. Removing unused method `created_date`
14. ` app/helpers/layout_helper.rb`, `app/helpers/registrations_helper.rb` and `app/helpers/authentications_helper.rb`- Removing unused helper.
15. `app/helpers/users_helper.rb` - Everything related to YouTube moved to `YoutubeService` and `YoutubeHelper`.
16. `app/helpers/youtube_helper.rb` - Contains methods used to fetch a user's youtube related information when he syncs with youtube.
17. `app/models/concerns/act_as_page.rb` - Moving the module from the lib/ directory to a model concern.
18. `app/models/article.rb`, `app/models/document.rb` and `app/models/static_page.rb` - Making use of the new model concern.
19. `app/models/event.rb` - Capitalized the constants to make sure Ruby interprets them as class constants.
20. `app/models/project.rb` - Renaming the Pivotal Tracker Url Validator since there was another validator with almost the same name. Added a members instance method, to remove duplication throughout the app. Added a videos instance method to call the YoutubeService and fetch the videos.
21. ` app/models/user.rb` - Added videos instance method to access videos from the YoutubeService.
22. `app/presenters/base_presenter.rb` - It is considered good practice to have a `respond_to_missing?` method accompanying a `method_missing`.
23. `app/services/youtube_service.rb` - This YoutubeService encapsulated all the functionality for fetching both user videos and project videos.
24. `app/views/articles/preview.html.erb`, `app/views/articles/show.html.erb` - Removing an extra instance variable and using associations.
25. `app/views/devise/registrations/_preview.html.erb` - User Preview was never used and commented out, so removed.
26. `app/views/devise/registrations/edit.html.erb`, `app/views/users/_hire_me.html.erb` - Using the model method, instead of the helper which is faster since the helper fetches the record again from the database.
27. `app/views/documents/index.html.erb`, `app/views/events/show.html.erb`, `app/views/projects/show.html.erb` - Using new ActiveRecord presence checkers.
28. `app/views/events/_form.html.erb`, ` app/views/events/_repeats_weekly_options.html.erb ` - Using new Event Class Constants
29. `app/views/layouts/_sponsors.html.erb` - Removing unnecessary parts which are commented out and increase rendering and loading time.
30. `app/views/projects/show.html.erb` - Using the project instance method, instead of the extra instance variable
31. `app/views/users/_hire_me.html.erb`, `app/views/users/show.html.erb` - Moved it from the layouts to the users directory since it was used only in the users show page.
32. `app/views/users/index.html.erb`  - No need to check if a title is present since it will return a empty array when not present.
33. `config/cucumber.yml` - Automatically add the tag `--require features`
34. `config/environment.rb` - Removing the non - app related code from the config/ directory to the lib/ directory.
35 `config/initializers/geocoder.rb` - Set the timeout to 10, because currently it will fail regardless of it working or not.
36. `config/initializers/website_one.rb` - Automatically requiring the lib/validators directory.
37. `config/routes.rb` - Removing the destroy action on projects and articles.
38. `db/`: Add index on articles and documents and adding in migrations from acts as taggable on.
39. `features/project_pivotal_stories.feature` - Fixing the project pivotal tracker stories feature to stub out the request for youtube on the project index page.
40. `features/projects.feature` - Add in a stub for the request to the pivotal tracker on the project index page.
41. `features/step_definitions/youtube_steps.rb`, `features/tabs.feature` - Switch to the new YoutubeService.
42. `lib/agile_ventures.rb`, `lib/agile_ventures/bulk_mailer.rb`, `lib/bulk_mailer.rb` - Remove the unnecessary nesting and move the bulk mailer to the root of the lib/ directory.
43. `lib/core_ext/datetime.rb` - Move the datetime extension in the config/ directory to a core extension in the lib/ directory.
44. `lib/custom_errors.rb`  - Case Status 500 and else block were the same, so merged them into one.
45. `lib/nested_key_extension.rb` - Move the config/nested_key_extension.rb to the lib/ directory where it made more sense.
46. `lib/user_sanitizer.rb` - Remove the user sanitizer which was causing problems.
47. `lib/validators/pivotal_tracker_url_validator.rb` - Move it inside the lib/validators and use a more specific name since it was conflicting with another validator.
48. `lib/validators/uri_validator.rb` - Move the UriValidator to the lib/validators from the config directory so as to group all the custom validators in the lib/validators directory.
49. Many tests have been changed to match with the above changes.
50. Lots of new tests have been written to upgrade the test coverage to 100%.