Tests must enable utc
correct tiny typo in FAQ around Windows celeryd invocation
group/chord/chain are now subtasks

- The source code for these, including subtask, has been moved
to new module celery.canvas.

- group is no longer an alias to TaskSet, but new alltogether,
since it was very difficult to migrate the TaskSet class to become
a subtask.

- A new shortcut has been added to tasks:

    >>> task.s(arg1, arg2, kw=1)

    as a shortcut to:

    >>> task.subtask((arg1, arg2), {"kw": 1})

- Tasks can be chained by using the | operator:

    >>> (add.s(2, 2), pow.s(2)).apply_async()

- Subtasks can be "evaluated" using the ~ operator:

    >>> ~add.s(2, 2)
    4

    >>> ~(add.s(2, 2) | pow.s(2))

    is the same as:

    >>> chain(add.s(2, 2), pow.s(2)).apply_async().get()

- A new subtask_type key has been added to the subtask dicts

    This can be the string "chord", "group", or "chain"

- maybe_subtask now uses subtask_type to reconstruct
  the object, to be used when using non-pickle serializers.

- The logic for these operations have been moved to dedicated
  tasks celery.chord, celery.chain and celery.group.

- subtask no longer inherits from AttributeDict.

    It's now a pure dict subclass with properties for attribute
    access to the relevant keys.

- The repr's now outputs how the sequence would like imperatively:

    >>> from celery import chord

    >>> (chord([add.s(i, i) for i in xrange(10)], xsum.s())
          | pow.s(2))
    tasks.xsum([tasks.add(0, 0),
                tasks.add(1, 1),
                tasks.add(2, 2),
                tasks.add(3, 3),
                tasks.add(4, 4),
                tasks.add(5, 5),
                tasks.add(6, 6),
                tasks.add(7, 7),
                tasks.add(8, 8),
                tasks.add(9, 9)]) | tasks.pow(2)
Avoid 'no handlers for logger' warning
Massive logging improvements

To conform with best practices:

- Classes used by the worker no longer uses app.get_default_logger, but uses
  `celery.utils.log.get_logger` which simply gets the logger not setting the
  level, and adds a NullHandler.

- Loggers are no longer passed around, instead every module using logging
  defines a module global logger that is used throughout.

- All loggers inherit from a common logger called "celery".

- Before task.get_logger would setup a new logger for every task,
  and even set the loglevel.  This is no longer the case.

  - Instead all task loggers now inherit from a common "celery.task" logger
  that is set up when programs call `setup_logging_subsystem`.

  - Instead of using LoggerAdapter to augment the formatter with
    the task_id and task_name field, the task base logger now use
    a special formatter adding these values at runtime from the
    currently executing task.

- Redirected output from stdout/stderr is now logged to a "celery.redirected"
  logger.

- In addition a few warnings.warn have been replaced with logger.warn.
celery.task module call works again
Adds ordereddict to RPM deps
Changes the type of some config values to float
Default for CELERYBEAT_MAX_LOOP_INTERVAL now set by individual schedulers
Cosmetics
Worker guide; Add note about what pools support what
Now depends on billiard 2.7.3.0
Don't use relative imports in main modules
Use freeze_support from billiard
Cleanup
flake8
flake8
Tests passing
Merge pull request #666 from psnj/master

Correct tiny typo in FAQ around Windows celeryd invocation
Merge pull request #665 from iancmcc/master

Avoid circular imports in celery.loaders