L::Collect: Avoid overcounting index memory usage

When submitting index and sorted_index together to Devel::Size, we
avoid having it overcounting the memory usage for the L::Path objects.
Example, before:

"""
N:   -- index: 29.32 MB
[...]
N:   -- sorted_index: 28.74 MB
"""

after:

"""
N:   -- index: 30.32 MB
"""

Signed-off-by: Niels Thykier <niels@thykier.net>
L::Relation: Reduce the memory usage of L::Relation objects

This patch contains two memory optimisations for L::Relation.  The
first is a singleton empty relation, which means that empty relation
fields no longer pay for a new object each time.

The second optimisation relies on some "perlguts" knowledge.  In C,
storing a NULL in an array is cheaper than storing an actual element.
In perl, storing "undef" in an array causes perl to create a new empty
scalar (which behaves like undef) and shoves it into the array.

perl allows us to do "out-of-bounds" access and just returns "undef",
so we do not actually /need/ the arrays to be a fixed size.  So we
abuse this fact to just pop undef elements in the list.

A completely unversioned relation (without multi-arch or architecture
qualification) will be reduced by 4 SVs[1].  Even the average
versioned relation will still be reduced by 2 SVs.  These SVs
accumulates to about ~0.44MB (on i386) for the binary_relation of
source:linux alone.

[1] In perl 5.19.2, a SV appears to be two 32bit ints and two
pointers.  So 16 to 24 bytes a piece depending on the architecture.

Signed-off-by: Niels Thykier <niels@thykier.net>