Greatly improved streamer usage for buttons

Utilised the E_STREAMER_EXTRA_ID array for linking the button sphere
area to the button data. The button ID is now stored within the streamer
area's extra ID array. This means that no more loops are required to
find out which button is assigned to a specific area ID as that button
ID is stored within the streamer data.

How it works now:

1. Player enters an area
2. Firstly, code checks if that area is a button area (first array cell
is set to BTN_STREAMER_AREA_IDENTIFIER, default 100)
3. If it is, the area is added to an index assigned to that player. This
index lists all the buttons that the player is standing in range of.
4. When/if the player presses F/Enter (16) that index is looped and
sorted by distance.
5. OnButtonPress is called for each button, in order of distance from
player.

With the old method, step number 4 actually involved looping EVERY
button in the world.