Models/Menu, Models/MenuSection: Add new models

- Introduce model for holding all the menu items of a bakery. This new model is called
Menu.
- A Menu has one or many Menu Sections and a Menu Section has one or many Menu Items.
- A Bakery can have one or more Menus, but in practice it is only likely to be one.
Models/Bakery: Add one-to-many relationship between Bakery and Menus
Models/MenuItem: Add many-to-one relationship between Menu Items and Menu Sections
Models/Size, /Options, /SpecialOffer: Now these are effectively treated like Tags

- For Size, needed to correct the mistake that Size was modelled *as* a Tag rather than as
*having* a tag
- Option and SpecialOffer have a many-to-one relationship with Tag
- Size has a many-to-many relationship with Tag
Controllers/MenuItems: Modify search_by_string() method to handle new way that Size, Option, and SpecialOffer are modelled

- Also remove the dummy data that was being used for testing
Controllers/Bakeries: Modified view() so it retrieves full Bakery profile

- Full profile now includes information about:
  = Bakery Menu (Menu contains Menu Sections each of which in turn contains Menu Items; 
    and for each Menu Item get the Size, Option, and Special Offer information)
  = Delivery Zones where the Bakery delivers
  = the Opening Hourse for the Bakery

- Comment out the dummy Bakery JSON data that was used for testing
Controllers/PostalTowns: Add "bakeries_nearby" method

- Based on bakeries_nearby method in PostcodeDistrict Controller
- Also add associated View file
Controllers/PostalTowns: Modify bakeries() method to return list of bakeries
Controllers/Bakeries: Modify search_by_string() to handle "PostalTown" locations
Controllers/MenuItems: Modify search_by_string() to handle "PostalTown" locations
Controllers/PostcodeDistricts: Get rid of redirect in bakeries_nearby()
Controllers/Postcodes: Change name of 'field10' and 'field11' to 'eastings' and 'northings'

- Also change the associated Test Fixture
Models/Bakery: Add 'distance' as a virtual field.
Behaviors/Inheritable: Allow for Single Table Inheritance

- This is code from Cake Development Corporation
- This facilitates what is called "Single Table Inheritance", which means
that a number of different models can be mapped to the same database table
(e.g. District, TubeStation, and Landmark are all different models that
represent different types of location in the real world and which all map to
the same 'locations' DB table)
Behaviors/Location: Allow all location-oriented functionality to be grouped in one place
Models/Location, LocationType, District, Landmark, and TubeStation

- Add new location types to the system.
- Location is the 'parent' Model, and District, Landmark, and TubeStation are
the 'child' models. Using the "Inheritable" behaviour, all the 'child' models
map to the same locations DB table. All the 'child' models also 'inherit'
the functionality defined in the "Location" Behaviour.
Models/PostalTown, Postcode, PostcodeDistrict: Inherit 'Containable' and 'Location' behaviours
Controllers/Location: Consolidate location-oriented actions in one controller

- Implement 'bakeries_within_radius()' action for retrieving bakeries that
are within given radius of a given location
- Also includes corresponding View file.
Controllers/Bakeries, MenuItems: Use single Locations controller for location-oriented functionality

- No longer call PostcodeDistricts and PostalTowns controllers to find list
of bakeries within distance of a given user location. Now invoke single
action in Locations controller which handles all different types of location
in the system
Controllers/Bakeries, MenuItems: Add miles and city attributes to the results