Add a request parser.

Summary:
Parses the get and post array's. Cleans the keys up. PHP replaces certain characters one of these being a period ".", this is silly and we want to get it back.

Ref T3432

Test Plan:
Parse both request arrays and use phabricator generally.
Start submitting forms, including nested data (cc[0]=...).
Use custom fields with a period in the key.

Reviewers: epriestley

CC: aran, Korvin

Maniphest Tasks: T3432

Differential Revision: https://secure.phabricator.com/D6277
Be more liberal in reading LDAP configuration

Summary: Ref T1536. If we have `''` (empty string) instead of a strict null, we should still ignore it during lookup.

Test Plan: Configuration with searchAttibute but empty string usernameAttribute now works correctly.

Reviewers: btrahan, chad

Reviewed By: chad

CC: aran

Maniphest Tasks: T1536

Differential Revision: https://secure.phabricator.com/D6286
Add a PhutilAsanaFuture

Summary: Ref T2852. Provides future-based access to Asana's OAuth/HTTP API.

Test Plan: Logged in with Asana, effecting a "users/me" call.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2852

Differential Revision: https://secure.phabricator.com/D6272