Update schema.py

This will allow for the underlying dictionary implementation to be configurable without changing the current/default behavior. For example:

```python
from collections import OrderedDict

from halogen import Schema, Link, Attr, Embedded

class MySchema(Schema):
    dict_type = OrderedDict

OrderedSchema = type('MyOrderedSchema', (BaseSchema,), OrderedDict([
    ('self', Link()),
    ('field', Attr()),
    ('sub', Embedded())
]))

OrderedSchema.serialize(obj)
```

This would allow someone to have predictable serialization results:

```json
{
    "_links": { ... },
    "field": "value",
    "_embedded": { ... }
}
```
i would move the schema declaration inside of the test, and test 2 different field positions to ensure that the order is preserved, it makes the test much more valuable. ATM it's not clear what exactly it does test, if it's occasional or not that fields are in proper order in the json