Ignore `undefined` value for options object

So calling parse like this will use the default options instead

	var options = undefined
	parser.parse(input, options)
Ignore `undefined` value for `startRule` option

So calling parser like this will use default startRule option instead

	var options = {}
	parser.parse(input, {startRule: options.startRule})
Merge branch 'patch-2', remote-tracking branch 'origin/patch-1' into all-patch