Correct how buildpack positions are managed.

Insert/Update have different rules depending on where the new/update buildpack needs to slot into.
Added testcases to cover the more basic insert in the middle.
Overall test cleanup, removed tests that no longer made sense, fixed ones that had misleading intent.