Introduce kIntMapKind for IntMap array with only integer keys

Summary: This diff introduces a new ArrayKind kIntMapKind which has integer keys and is able to gracefully downgrade into a MixedArray. It templatizes the existing functions on MixedArray where necessary to raise warnings, and switches on the template parameter so that there should be no overhead for the kMixedKind case besides the extra code size.

Reviewed By: @paroski

Differential Revision: D1386055
Simplify remove_dir_recursive

Summary: I was going to add a check for if($target is in root dir), but that makes the whole block pointless.

Given that unlink() now works on orphan symlinks (?), I don't think it's needed

Reviewed By: @JoelMarcey

Differential Revision: D1394804