Add a few methods to `AASTNode` and `AASTToken`

Summary: Add a few general purpose methods to the `AASTNode` and `AASTToken` class.

Test Plan: See D10558.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Differential Revision: https://secure.phabricator.com/D10554
Minor linter fixes

Summary: Apply some linter autofixes.

Test Plan: `arc lint` and `arc unit`

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: epriestley, Korvin

Differential Revision: https://secure.phabricator.com/D10566
Update PHP compatibility information

Summary: Let's keep this relatively up-to-date.

Test Plan: N/A

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Differential Revision: https://secure.phabricator.com/D10573
Make libphutil compatible with utf8mb4

Summary:
Ref T1191. Two changes here:

  - Try to use the `utf8mb4` character set. Fall back to `utf8` if it's not available. This may be slightly worse for old MySQL, but is far, far easier than trying to keeep a cache around somewhere with availability information.
  - Prepare to transition to `utf8mb4`. I'm just going to switch this over in the future. I considered trying to save the migration state in the environment somewhere, but it gets really, really messy because we have to inspect the migration state in order to build a connection object. There's also no advantage in the overwhelming majority of cases. We can do something more messy here eventually if it ends up being more complicated than I think.

Test Plan: Wrote comments full of emoji locally.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T1191

Differential Revision: https://secure.phabricator.com/D10604
Quiet utf8mb4 warnings when establish MySQL connections

Summary: Fixes T6228. Ref T1191. Some versions of things spew warnings on these calls; I can't reproduce it locally but @fabe reports this resolving it for him in T6228.

Test Plan: Still works fine locally, but no surprises there.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: fabe, epriestley

Maniphest Tasks: T1191, T6228

Differential Revision: https://secure.phabricator.com/D10623
Use normal human units, not "correct" SI units, when parsing MB/GB etc

Summary:
Technically, "KB" is "kilobyte" which is 1000 bytes, and "KiB" is "kibibyte" which is 1024 bytes. I implemented this function "correctly", but in practice we mostly use it to parse things from `php.ini`, `mysql.cnf`, etc., which all use units of 1024 intead of 1000. This ends up being really confusing because you write `128M` in a file (technicall meaning "128 mebibytes") and then a setup warning says `137M` (tehcnically meaning "137 megabytes").

Use the standard normal units that everyone and everything uses instead of the "correct" units. If we have some cause for the "real" SI units later we can mess with this stuff when we hit that.

Test Plan: Saw the setup check in D10630 actually report what I wrote in the file instead of a weird SI value.

Reviewers: btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D10631
Set autoload to false on CURLFile in HTTPSFuture

Summary: Fixes T6264, I assume this is correct after grepping through the codebase.

Test Plan: Reload in sandbox, eyeball text, not sure what else to do.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T6264

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