Convert item['slug'] into string before concatenating it with ancestor path.

Fixes #588
Bump act-as-taggable-on to 3.2.6 and include the necessary migrations

Acts-as-taggable-on 3.0 has just been updated to a version that breaks alchemy
builds with PostgreSQL and MySQL. This makes every pull request fail. This is
an attempt to update it to the latest version and see whether with this PR
the Travis builds go through again.

I've tested tagging locally, and it does work as expected with this and Postgres.

Even if this passes Travis: This has to be tested manually; I'm not at all sure
I'm doing the Right Thing here.
Fix typo in README.md.
allow for active model serializer 0.9
v3.0.0
Fixes a bug where an empty cell elements collection breaks the elements select tag.
Fixes a small icon hover glitch.
Fixes preprocess_image_resize Config option.

The configuration option `preprocess_image_resize` was not compatible with Dragonfly 1.0 syntax.
typo fix
Merge pull request #611 from georgemillo/master

typo fix
Move all dimensions operations to Picture::Transformations

All point and string arguments can tage the "x20" or "20x" arguments.
Points get 0 interpolated, height or width get the width or height of
the crop_size or of the original image.

Upscaling is not allowed unless upscale is set to true at the end of method
calls.
Fix bugs on Image::Transformations

This commit tries to fix the issues raised by Thomas. One by one:

1. Refactoring app/views/alchemy/admin/essence_pictures/crop.html.erb
- I didn't really put everything into a method, but rather used Ruby's to_json method.
- @size_x and @size_y get merged into a @min_size parameter, because that's what it really is.

2. Added lots of comments

3. Moved all methods that aren't directly accessed from outside to private methods

4. Added some tests for complex cropping behaviour

5. Changed behaviour for the fixed_ratio option when cropping.
Before, fixed_ratio would be "true" and then set the ratio to 1. Now, one fixed_ratio
takes a number (width/height) and can be arbitrarily set. This makes sense when used in
conjunction with the "x20"/"20x" syntax for image size.
It only affects the image cropper. There is no support for ratio when rendering directly.

6. Thumbnails of cropped images without mask now show the correct part of the image.

7. Instead of raising an error when generating the default mask, the crop button is
disabled when trying to crop an image that cannot be cropped.

8. Changed "-resize" to Imagemagick option -thumbnail because it's
[faster than -resize](http://www.imagemagick.org/script/command-line-options.php#thumbnail)

9. Added upscale parameter to xy_crop_resize

10. Use @image instead of @picture.image_file in the picture_controller.rb
Replace imagemagick -thumbnail action with -resize

Imagemagick's -thumbnail operation is faster than -resize, but this comes
at a price. A lot of metadata is thrown away when using -thumbnail, such as
Copyright and Orientation data. It's better to just keep -resize.
Add upsample param to safe attributes, revert thumbnail algorithm

The upsample param could - in real life situations - never be
passed to the ```PicturesController```; it would always be filtered
out in the clean_picture_params method. Fixed by including it in
the list of safe params.

The cropped_thumbnail algorithm did not work as expected; it's now
reverted to the original algorithm (with a slight modification
allowing for one dimension to be set to zero).
fix thumbnail generation. finally, i think
accept params for modules
Raise js errors as ruby errors in feature specs. Closes #562
Convert specs to RSpec 2.99.0 syntax with Transpec

This conversion is done by Transpec 2.3.1 with the following command:
    transpec

* 664 conversions
    from: obj.should
      to: expect(obj).to

* 386 conversions
    from: == expected
      to: eq(expected)

* 284 conversions
    from: it { should ... }
      to: it { is_expected.to ... }

* 262 conversions
    from: obj.stub(:message)
      to: allow(obj).to receive(:message)

* 201 conversions
    from: obj.should_receive(:message)
      to: expect(obj).to receive(:message)

* 81 conversions
    from: obj.should_not
      to: expect(obj).not_to

* 29 conversions
    from: be_true
      to: be_truthy

* 26 conversions
    from: it { should_not ... }
      to: it { is_expected.not_to ... }

* 21 conversions
    from: be_false
      to: be_falsey

* 21 conversions
    from: describe 'some controller' { }
      to: describe 'some controller', :type => :controller { }

* 20 conversions
    from: describe 'some model' { }
      to: describe 'some model', :type => :model { }

* 18 conversions
    from: its(:attr) { }
      to: describe '#attr' do subject { super().attr }; it { } end

* 17 conversions
    from: Klass.any_instance.stub(:message)
      to: allow_any_instance_of(Klass).to receive(:message)

* 16 conversions
    from: describe 'some helper' { }
      to: describe 'some helper', :type => :helper { }

* 15 conversions
    from: describe 'some feature' { }
      to: describe 'some feature', :type => :feature { }

* 10 conversions
    from: collection.should have(n).items
      to: expect(collection.size).to eq(n)

* 9 conversions
    from: describe 'some view' { }
      to: describe 'some view', :type => :view { }

* 6 conversions
    from: Klass.any_instance.should_receive(:message)
      to: expect_any_instance_of(Klass).to receive(:message)

* 5 conversions
    from: =~ /pattern/
      to: match(/pattern/)

* 4 conversions
    from: obj.should_not_receive(:message)
      to: expect(obj).not_to receive(:message)

* 1 conversion
    from: Klass.any_instance.should_not_receive(:message)
      to: expect_any_instance_of(Klass).not_to receive(:message)

* 1 conversion
    from: Klass.any_instance.unstub(:message)
      to: allow_any_instance_of(Klass).to receive(:message).and_call_original

* 1 conversion
    from: before { example }
      to: before { |example| example }

* 1 conversion
    from: def helper_method example; end
      to: def helper_method RSpec.current_example; end

* 1 conversion
    from: describe 'some mailer' { }
      to: describe 'some mailer', :type => :mailer { }

* 1 conversion
    from: describe 'some routing' { }
      to: describe 'some routing', :type => :routing { }

* 1 conversion
    from: expect { }.not_to raise_error(SpecificErrorClass)
      to: expect { }.not_to raise_error

* 1 conversion
    from: expect(collection).to have(n).items
      to: expect(collection.size).to eq(n)

* 1 conversion
    from: obj.should_receive(:message).any_number_of_times
      to: allow(obj).to receive(:message)

* 1 conversion
    from: obj.stub(:message).and_return { value }
      to: obj.stub(:message) { value }

For more details: https://github.com/yujinakayama/transpec#supported-conversions
fix expect(expect(x).to).to to only one expect
Convert specs to RSpec 2.99.0 syntax with Transpec

This conversion is done by Transpec 2.3.1 with the following command:
    transpec -f lib/alchemy/test_support/essence_shared_examples.rb

* 6 conversions
    from: obj.stub(:message)
      to: allow(obj).to receive(:message)

* 4 conversions
    from: it { should ... }
      to: it { is_expected.to ... }

* 1 conversion
    from: be_true
      to: be_truthy

* 1 conversion
    from: obj.should_not
      to: expect(obj).not_to

For more details: https://github.com/yujinakayama/transpec#supported-conversions