Change UserFile::access behavior to match official.

Summary: In official implementation, is_executable() for directory in custom
protocol always return false. Change UserFile::access behavior to match
that behavior.

Fix vfsstream's directoriesAndNonExistingFilesAreNeverExecutable test.
Closes https://github.com/facebook/hhvm/pull/4096

Reviewed By: @ptarjan

Differential Revision: D1646140

Signature: t1:1646140:1414581586:d832b0a8b47df1a7c10236ea1bb4f7b650718abf
Steal one of the extra ObjectHeader bytes

Summary: We need a free byte in ObjectData to overlap with ArrayKind and/or
Collection::Type. The only use of subclassData.u8[1] was WaitableWaitHandle.
Due to field padding, adding a new context_idx_t field to WaitableWaitHandle
does not change the size of any concrete subclass except
AsyncGeneratorWaitHandle.

Reviewed By: @elgenie

Differential Revision: D1643614