Add the option to preserve original SELECT clause

When using select method on ActiveRecord it replaces the default SELECT clause. Sometimes you want to only add custom values (such as subquery from related tables), and restoring the original clause (table.*) is painful. As a squeel user, I don’t really like using custom SQL and I don’t want to have to specify the table name (which can also be aliased, or in a different database type).

There needs to be an option to either not replace the SELECT clause or to restore it, for example with this scope on ActiveRecord::Base:

# after a long time I just found out you can do that, doesn't feel right in app though
scope :select_all, -> { select(arel_table[Arel.star])) }

Steps to reproduce

class User < ActiveRecord::Base
end

users = User.select("5 AS custom")

Expected behavior

Original SELECT clause is kept (or ability to restore).

User.select("5 AS custom").to_sql
# => SELECT `users`.*, 5 AS custom FROM `users`

Actual behavior

Original SELECT clause is replaced with a new one.

User.select("5 AS custom").to_sql
# => SELECT 5 AS custom FROM `users`

System configuration

Rails version: 4.2.5.1

Ruby version: 2.2.3