But why?
Step-by-step reduction of your calls:
tester.apply.apply(tester, array) // resolves to (Function.prototype.apply).apply(tester, array) // does a tester.apply({something: 'special'}, 'and', 'a', 'bunch', 'of', 'parameters');
Here you can see what is going wrong. It would be right
var array = [ {something: 'special'}, ['and', 'a', 'bunch', 'of', 'parameters'] ];
then apply.apply(tester, array) will become
tester.apply({something: 'special'}, ['and', 'a', 'bunch', 'of', 'parameters']);
which makes
tester.call({something: 'special'}, 'and', 'a', 'bunch', 'of', 'parameters');
So, with your original array you will need to use
(Function.prototype.call).apply(tester, array)