Assume utf8mb4 support

Summary:
Ref T1191. This stops throwing an exception for non-BMP data when constructing queries.

  - For installs which have already adjusted, this allows emoji and other 4-byte characters to work.
  - For installs which have not adjusted yet but do have STRICT_ALL_TABLES set, MySQL will raise an error intead ("Incorrect string value...").
  - For installs which have not adjusted and also do not use STRICT_ALL_TABLES, this will silently truncate data. This is potentially a security risk. However, these installs are warned about the risk of leaving STRICT_ALL_TABLES disabled, there's no known way to exploit this issue, and they'll be auto-adjusted soon.

Test Plan: Ran locally and on secure.phabricator.com with this patch for a long time.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T1191

Differential Revision: https://secure.phabricator.com/D10798
Allow Conduit requests to be signed with a public/private keypair

Summary:
This allows callers (in the future, servers in a cluster or instances) to sign Conduit requests with an asymmetric keypair instead of a certificate or token.

Overall we could get away without this, but it seems worth doing for a few reasons:

  - By binding Device identity to SSH keys, we can also authorize them over (real) SSH easily, and not need separate conduit / SSH keys.
  - Asymmetric key cryptography is strong and well understood, and we never have to share or transmit private keys.
  - This is potentially useful to third parties for device identity, in a way that custom Conduit stuff wouldn't be.

Test Plan:
  - Added unit tests.
  - Will actually test once I mess with the other half of this.

Reviewers: hach-que, #blessed_reviewers, btrahan

Reviewed By: #blessed_reviewers, btrahan

Subscribers: epriestley, Korvin

Maniphest Tasks: T6240

Differential Revision: https://secure.phabricator.com/D10402
Process Remarkup in text and HTML email bodies appropriately

Summary: Ref T2617, adding inline styles to handle html email objects

Test Plan: Add code block to a Maniphest comment. Email should show pretty yellow background for code block.

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T2617

Differential Revision: https://secure.phabricator.com/D10860
Disallow `[1]` from being interpreted as a marked checkbox in remarkup

Summary: Fixes T6640. `[1]` and similar are more likely footnotes than checkmarks.

Test Plan: {F241922}

Reviewers: btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Maniphest Tasks: T6640

Differential Revision: https://secure.phabricator.com/D10913
Minor linter fix

Summary: Self-explanatory

Test Plan: `arc lint`

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: Korvin, epriestley

Differential Revision: https://secure.phabricator.com/D10942
Support an explicit connection timeout parameter for database connections

Summary:
Ref T6238. On the instance management interface, I want to check if an instance's database is reachable by connecting to it.

If it isn't, we hang for 30-60 seconds (default connection timeout). Allow explicit specification of a timeout when establishing a connection instead.

This only does MySQLi, not MySQL. We don't need MySQL for now, although it would be nice to support it eventually (Ref T6710).

Test Plan:
  - Browsed around.
  - Used short timeouts to get instance database status in instance management.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T6238, T6710

Differential Revision: https://secure.phabricator.com/D10944
Merge remote-tracking branch 'upstream/master'