Use QuerySet#subquery_serial value for subquery table name
Implement QuerySet#fields() and fields_tuple() methods

fields(*args) returns dict and fields_tuple(*args) returns tuple
Modify algorithm of wrapper_clause in QuerySet#_generate_sql()

wrapper_clause wraps original SQL recursively.
self.wrapper_clause  (A)
  self.parent.wrapper_clause  (B)
    self.parent.parent.wrapper_clause  (C)
      ...
1. (C) wraps original SQL
2. (B) wraps 1.
3. (A) wraps 2.
Add alias QuerySet["fieldname"] for QuerySet#field("fieldname")