Fix a bug in the IRMemoryMap which generated bogus allocations.

Previously, only the starting locations of the candidate interval
and the existing interval were compared.  To correctly detect
range intersections, it is necessary to compare the entire range
of both intervals against each other.

Reviewed by: scallanan

Differential Revision: http://reviews.llvm.org/D4286
Merge the used symbol scanning of MCObjectStreamer and RecordStreamer.

This completes the refactoring of RecordStreamer.