Fixed error when collecting parent hooks

Child controller inherits prototype's methods from the parent controller prototype.

So, if we have `Parent` controller

```js
Parent.prototype.before = function () {
  console.log('parent.before');
};
```

and we create `Child` class inheriting from the `Parent` we will have prototype as follows:

```js
Child.prototype.before = function () {
  console.log('parent.before');
};
```

Now when collecting hooks, the result hooks array will contain both functions instead one and it will cause double hook execution.

The problem is this line: https://github.com/EventedMind/iron-router/blob/dev/lib/route_controller.js#L45

```js
return ctor.prototype[hookName] ? hooks.concat(ctor.prototype[hookName]) : hooks;
```

What it does is checking if given hook is in the given prototype but it will be true even if the hook is not in the prototype. It's because it will look in the prototype of the parent class and so on. So, if we have three classes inheriting from each other:

`C` <- `B` <- `A` <- `RouteController`

and only `A` class will have `after` or `before` hook, it will still think that each one has given hook.

To deal with that, we have to explicitly check if a given prototype has a hook by using `Utils.hasOwnProperty` function.

```js
return Utils.hasOwnProperty(ctor.prototype, hookName) ? hooks.concat(ctor.prototype[hookName]) : hooks;
```
Added failing test for #276
Fixed #276
Fixed problem where the initial hash was stripped.

For #254.
Added test for collected hooks count

We have to test not only hooks order but also hooks count to make sure that collecting hooks works properly.
Merge branch 'pr/284' into dev
Clarify placement of 'where'

For server routes, see issue #88.
Update README.md
Merge pull request #301 from ariemer/patch-1

Clarify placement of 'where'
Added failing test case for simple optional paths.
Fixed #328
Basic test for integer params. For #330
Added option to customise the IronRouter/IronLocation anchor/link selector IronRouter.configure({"linkSelector":"a[href][data-custom='true']"
Merge pull request #324 from nathan-muir/iron-location-anchor-selector

Added option to customise the IronLocation anchor selector
pathFor fix for optional segments. See #338

Conflicts:
	test/route.js
Return null on invalid resolves.
More tests for optional segments.
Reordering tests.
Alternative approach to empty optional segments.

We use this if we want for /:paramOne?/:paramTwo? to resolve to
/b if only paramTwo == b is specified, and not //b.
More tests.