detect proper libdwarf types

Summary: Current master is broken by libdwarf once again. Other than checking for
a particular init function we should also check if we're allowed to use
a const char* for name separately.

Combined them into a macro for future changes.
Closes #3163
Created from: https://github.com/facebook/hhvm/pull/3163

Reviewed By: @ptarjan

Differential Revision: D1429569
Fix a off-by-one error in hack format region mode and make it available in js

Summary: In region mode in the formatter, the formatter was letting the previous token through.

Imagine the following situation:

[0] = \n
[1] = i
[2] = f

I have selected my region to be from position 1 to the end.

With the old logic, when \n is being processed, pos=0 and new_pos=1. Because new_pos is within the region, silent mode is off for \n, even though I have not selected it in my region.

Using new_pos looks intentional, because it's trying to figure out where my current token ends, so this is an off by 1 error.

Reviewed By: @jwatzman

Differential Revision: D1429649
Fix huge stack usage in `Naming.expr_`

Summary: We were apparently just on the edge of what was acceptable
here, and adding frame pointers in the ocaml runtime/compiler pushed us
over the limit. Do something tail recursive.

Reviewed By: @elgenie

Differential Revision: D1429996
Revert "detect proper libdwarf types"

Summary: refs facebook/hhvm#3163

Breaks centos build: https://gist.github.com/fredemmott/ffa79f0c9cadd30b87ba

Reviewed By: @ptarjan

Differential Revision: D1430034
typechecker: interaction of interface req + trait req + inheritance

Summary: ... very subtle bug with the visibility of protected methods
 inside traits when the relevant requirements go through an interface.

Reviewed By: @jwatzman

Differential Revision: D1428536
Do not produce refcount in LdResumableArObj, use TakeRef instead

Summary: LdResumableArObj just loads pointer to an object, but does not produce
reference count, so remove the PRc tag. Instead, add TakeRef opcode to
produce the reference count to make refcount optimizer aware of implicitly
owned references.

Reviewed By: @swtaarrs

Differential Revision: D1429349
delete extra space on main.cpp

Summary: Closes #3164
Created from: https://github.com/facebook/hhvm/pull/3164

Reviewed By: sgolemon, liranuna

Differential Revision: D1429520
Codemod ti/proxygen -> proxygen/facebook

Summary: This is the first step in open source. Moving proxygen to a top
level directory. Moved all code in there to a facebook/ subdirectory
(since nothing is open sourced yet)

See the task for more details

Reviewed By: @claudiugh

Differential Revision: D1421845
Revert "[proxygen] Codemod ti/proxygen -> proxygen/facebook"

Reviewed By: @claudiugh
Make Eval.ProfileBC work again

Summary: It was never updated to work with hhir

Reviewed By: @swtaarrs

Differential Revision: D1431009
Support ini_set('useragent') in file_get_contents for http file (#3125)

Summary: Add the missing config option: user_agent

This closes  issue #3125
Closes #3151

Reviewed By: @ptarjan

Differential Revision: D1426527
fix OCaml for ninja-build generator

Summary: ```bash
$ cmake -G Ninja .
$ ninja -j4
```
![2014-07-08 01 49 51](https://cloud.githubusercontent.com/assets/3759759/3503335/b535d782-062e-11e4-87b7-ff98c4df1bca.png)
Closes #3129

Reviewed By: @sgolemon

Differential Revision: D1431212

Pulled By: @jwatzman
More cleanup in translator.h

Summary: Lots of documentation and reorganization, killing dead functions,
distributing includes, etc.  No functionality change.

I wanted to deal with translator.cpp in this diff also, but this is
already touching a lot of things, so I'll save that for later.

Reviewed By: @alexmalyshev

Differential Revision: D1430249
Adjust the encoding m_pos uses when pointing past the last element

Summary: This diff changes the way arrays encode m_pos when it points past the last
element. Before, ArrayData::invalid_index (-1) was used. This diff changes
it to uses a non-negative value that is greater than the position of the
last element (if there is a last element). This allows PackedArrays and
MixedArrays to set m_pos to 0 initially, and then they never need to update
m_pos when a new element is added.

Reviewed By: @edwinsmith

Differential Revision: D1430872
hh --auto-complete --json: add details about function types @override-unit-failures

Summary: I am not sure if this is a good layout for json output.

This is one of my first ocaml diffs, any comments about anything are welcome :)

Reviewed By: @joelbeales

Differential Revision: D1428333
Entry blocks have an extra predecessor, part 2

Summary: Similar to D1412834, we weren't counting the extra predecessor that
entry blocks have in JIT::Block.

Reviewed By: @ottoni

Differential Revision: D1425851
Fix asserts with Mov codegen.

Summary: 1. XLS won't allocate registers for InitNull, but it isn't treated as
a const, so we'd die when trying to do Type::rawVal() in cgMov().

2. t2:StkPtr = Mov t1:StkPtr is legal, but we weren't handling Mov in
forceAlloc().

3. cgMov wasn't handling the dest register being InvalidReg.

Reviewed By: @ottoni

Differential Revision: D1425846
Minor code cleanup

Summary: Thats it

Reviewed By: @bertmaher

Differential Revision: D1431103
Introduce NvGetIntConverted so IntMap array can warn on converted numeric string keys

Summary: IntMap array is an array with only integer keys, that does not support
converting numeric string keys to integer keys. It instead raises a warning
when such a thing occurs. This diff adds to ArrayFunctions a function to
warn on such occurrences, but all other ArrayKinds will just delegate to
NvGetInt without warning.

Reviewed By: @paroski

Differential Revision: D1428302
Turn on numeric string key warnings for IntMap arrays

Summary: IntMap array is an array with only integer keys, that does not support
converting numeric string keys to integer keys. It instead raises a warning.

This diff handles jit code paths that silently convert string keys to integer keys.

Reviewed By: @paroski

Differential Revision: D1427621