More intuitive Objective-C method calling API?
I've been doing a fair bit of plugin writing lately, and something that kept bugging me was the existing ways of invoking Objective-C methods - they don't quite integrate well into JavaScript, and throw off linters, syntax highlighters... all which leads me to a possible (better?) alternative to the existing methods of calling method on an Objective-C NSObject class or instance:

Instead of writing:

```js
const window = [[NSPanel alloc]
	initWithContentRect: NSMakeRect(0, 0, 420, 646),
	styleMask: NSWindowStyleMaskClosable | NSWindowStyleMaskTitled | NSWindowStyleMaskResizable,
	backing: NSBackingStoreBuffered,
	defer: false
]];
```

or

```js
const window = NSPanel.alloc().initWithContentRect_styleMask_backing_defer(
	NSMakeRect(0, 0, 420, 646),
	NSWindowStyleMaskClosable | NSWindowStyleMaskTitled | NSWindowStyleMaskResizable,
	NSBackingStoreBuffered,
	false
);
```

We could instead write:

```js
const window = NSPanel.alloc().call({
	initWithContentRect: NSMakeRect(0, 0, 420, 646),
	styleMask: NSWindowStyleMaskClosable | NSWindowStyleMaskTitled | NSWindowStyleMaskResizable,
	backing: NSBackingStoreBuffered,
	defer: false
});
```

The advantages are:

1. linting works as expected
2. your syntax highlighter won't bug out
3. the semantics between an argument an its label is preserved
4. more unintuitive/obvious selector to JS translation than the underscore way
5. no need to use a preprocessor
6. 100% js

This is possible because JavaScript objects preserve the key order their object literals were declared with. I've written an [example implementation](https://gist.github.com/matt-curtis/2ab31b12554be0c66a5edd495fbe03e7) here, but it has downsides, namely: extending prototype to add `call` for _every single object_ is kind of terrible, and that it might override any existing NSObject method/property with the name `call`. That second one can be easily overcome though by using `$` in it's place or something.

Thoughts?